Difference between revisions of "Motorola 68000"

From SizeCoding
Jump to: navigation, search
(The Motorola 68k processor)
Line 22: Line 22:
 
The number of cycles for each instruction is different depending of processor model in M68K family.
 
The number of cycles for each instruction is different depending of processor model in M68K family.
 
: http://oldwww.nvg.ntnu.no/amiga/MC680x0_Sections/mc68000timing.HTML
 
: http://oldwww.nvg.ntnu.no/amiga/MC680x0_Sections/mc68000timing.HTML
 +
 +
== Size considerations ==
 +
Moving/Calculating Register from/to registers - 2 bytes
 +
Moving/Calculating with byte or word values - 4 bytes
 +
Moving/Calculating with long values - 6 bytes
 +
 +
Shorter variants:
 +
* moveq #value, reg : 2 bytes - Moves a values -128...127 to a register
 +
* addq #value, reg : 2 bytes - Adds a values 0..8 to a register
 +
* subq #value, reg : 2 bytes - Subtracts a values 0..8 from a register
 +
 +
 +
== Resources ==
 +
* [http://www.beycan.net/eklenen/M68000_Instruction_Set.pdf M68000 Instruction Set]
  
 
== Motorola M68K Platforms ==
 
== Motorola M68K Platforms ==

Revision as of 07:04, 20 June 2022

Introduction

Wanting to start sizecoding on a Motorola 68k platform in this day and age can be tough.

So here is a bit of help to get you started:

The Motorola 68k processor

The Motorola 68k processor is a 16-bit Big-Endian format processor, using 32-bit register and addresses.

This means that instruction sizes on average are either 2 or 4 bytes each, and 6 bytes for longword / 32-bit instructions.

Note: The assigment direction is source,dest instead of dest,source !!!

Registers

  • D0..D7 - 8 x 32 bit General Purpose Registers
  • A0..A6 - 7 x 32 bit Address Registers
  • A7 - 32-bit Stack-Address Register

Instructions timing

The number of cycles for each instruction is different depending of processor model in M68K family.

http://oldwww.nvg.ntnu.no/amiga/MC680x0_Sections/mc68000timing.HTML

Size considerations

Moving/Calculating Register from/to registers - 2 bytes Moving/Calculating with byte or word values - 4 bytes Moving/Calculating with long values - 6 bytes

Shorter variants:

  • moveq #value, reg : 2 bytes - Moves a values -128...127 to a register
  • addq #value, reg : 2 bytes - Adds a values 0..8 to a register
  • subq #value, reg : 2 bytes - Subtracts a values 0..8 from a register


Resources

Motorola M68K Platforms