Difference between revisions of "Motorola 68000"

From SizeCoding
Jump to: navigation, search
(Size considerations)
 
Line 24: Line 24:
  
 
== Size considerations ==
 
== Size considerations ==
Moving/Calculating Register from/to registers - 2 bytes
+
Here are some general rule of thumbs when it comes to size consideration when programming the M68000
Moving/Calculating with byte or word values - 4 bytes
+
 
Moving/Calculating with long values - 6 bytes
+
* 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:
 
Shorter variants:
Line 32: Line 34:
 
* addq #value, reg : 2 bytes - Adds a values 0..8 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
 
* subq #value, reg : 2 bytes - Subtracts a values 0..8 from a register
 
  
 
== Resources ==
 
== Resources ==

Latest revision as of 07:05, 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

Here are some general rule of thumbs when it comes to size consideration when programming the M68000

  • 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