Difference between revisions of "Motorola 68000"

From SizeCoding
Jump to: navigation, search
(Registers)
(Size considerations)
(3 intermediate revisions by the same user not shown)
Line 5: Line 5:
  
 
=== The Motorola 68k processor  ===
 
=== The Motorola 68k processor  ===
The Motorola 68k processor...  
+
The Motorola 68k processor is a 16-bit Big-Endian format processor, using 32-bit register and addresses.
  
Note: Assigment direction is source,dest instead of dest,source !!!
+
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 ====
 
==== Registers ====
  
D0..D7 - 8 x 32 bit General Purpose Registers
+
* D0..D7 - 8 x 32 bit General Purpose Registers
  
A0..A6 - 7 x 32 bit Address Registers
+
* A0..A6 - 7 x 32 bit Address Registers
  
A7 - 32-bit Stack-Address Register
+
* A7 - 32-bit Stack-Address Register
  
 
==== Instructions timing ====
 
==== Instructions timing ====
 
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 ==
 +
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 ==
 +
* [http://www.beycan.net/eklenen/M68000_Instruction_Set.pdf M68000 Instruction Set]
  
 
== Motorola M68K Platforms ==
 
== Motorola M68K Platforms ==

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