APPENDIX B: 680X0 INSTRUCTIONS
This listing is based on ARTtbl's one. Big thanx a three cheers to him! =) It
shows all 68030 instructions without FPU stuff. I just included it, because I
feel every coder should have this list.
+-----------------------------------------------------------------------------+
|ACBD |Add Decimal with Extend |useless.. |
|ADD |Add | |
|ADDA |Add Address | |
|ADDI |Add Immediate | |
|ADDQ |Add Quick | |
|ADDX |Add with Extend |for working with big numbers |
|AND |Logical AND | |
|ANDI |Logical AND Immediate | |
|ASL, ASR |Arithmetic Shift L/R | |
|-----------|-----------------------------| |
|Bcc |Branch Conditionally | |
|BCHG |Test Bit and change | |
|BFCLR |Test Bit Field and Clr |useful, but can be slow in loops |
|BFEXTS |Signed Bit Field Extract | " |
|BFEXTU |Unsigned Bit Field Extract | " |
|BFFFO |Bit Field Find First One | " |
|BFINS |Bit Field Insert | " |
|BFSET |Test Bit Field and Set | " |
|BFTST |Test Bit Field | " |
|BKPT |Breakpoint |for debuuging purposes only |
|BRA |Branch | |
|BSET |Test Bit and Set | |
|BSR |Branch to Subroutine |essential for structurising code |
|BTST |Test Bit | |
|-----------|-----------------------------| |
|CALLM |Call Module |unsupported from 030 and higher? |
|CAS |Compare and Swap Operands |useless, cos of low speed |
|CAS2 |As above in Dual Mode | " |
|CHK |Check Reg: Against Bound |no idea |
|CHK2 |Check Against Upper and |no idea |
| |Lower Bounds | |
|CLR |Clear |replace with moveq or move |
|CMP |Compare | |
|CMPA |Compare Address | |
|CMPI |Compare Immediate | |
|CMPM |Compare Memory to Memory | |
|CMP2 |Compare Register Against |no idea |
| |Upper and Lower Bounds | |
|-----------|-----------------------------| |
|DBcc |Test Condition, Decrement |especially dbf/dbra is much used |
| |and Branch |ideal for loops |
|DIVS, DIVSL|Signed Divide |slow, use muls where possible |
|DIVU, DIVUL|Unsigned Divide |slow, use mulu where possible |
|-----------|-----------------------------| |
|EOR |Exclusive Or | |
|EORI |Exclusive Or Immediate | |
|EXG |Exchange Registers | |
|EXT, EXTB |Signed Extend | |
|-----------|-----------------------------| |
|ILLEGAL |Take Illegal Instruction Trap|for debugging purposes only |
| | | |
|-----------|-----------------------------| |
|JMP |Jump | |
|JSR |Jump to Subroutine |essential for structurising code |
|-----------|-----------------------------| |
|LEA |Load Effective Address | |
|LINK |Link and Allocate |useful for recursive subrout-calls |
|LSL, LSR |Logical Shift Left/Right | |
|-----------|-----------------------------| |
|MOVE |Move |unmissable :) |
|MOVEA |Move Address | |
|MOVE CCR |Move Condition Code Reg. | |
|MOVE SR |Move Status Register | |
|MOVE USP |Move User Stack Pointer | |
|MOVEC |Move Control Register | |
|MOVEM |Move Multiple |fast for moving large chunks of mem|
|MOVEP |Move Peripheral | |
|MOVEQ |Move Quick | |
|MOVES |Move Alternate Address Space | |
|MULS |Signed Multiply | |
|MULU |Unsigned Multiply | |
|-----------|-----------------------------| |
|NBCD |Negate Decimal with Extend |useless |
|NEG |Negate | |
|NEGX |Negate with Extend | |
|NOP |No Operation |no comment :) |
|NOT |Logical Complement | |
|-----------|-----------------------------| |
|OR |Logical inclusive Or | |
|ORI |Logical inclusive Immediate | |
|-----------|-----------------------------| |
|PACK |Pack BCD |useless |
|PEA |Push Effective Address |fast version of move.l ..,-(sp) |
|-----------|-----------------------------| |
|RESET |Reset External Devices |resets our ATARI |
|ROL, ROR |Rotate Left and Right | |
|ROXL,ROXR |Rotate with Extend | |
|RTD |Return and Deallocate | |
|RTE |Return from Exception | |
|RTM |Return from Module |unsupported from 030 and higher? |
|RTR |Return from Restore Codes | |
|RTS |Return from Subroutine |used in combination with BSR/JSR |
|-----------|-----------------------------| |
|SBCD |Subtr. Decimal with Extend |useless |
|Scc |Set Conditionally | |
|STOP |Stop |mhhh... don't use :) |
|SUB |Subtract | |
|SUBA |Subtract Address | |
|SUBI |Subtract Immediate | |
|SUBQ |Subtract Quick | |
|SUBX |Subtract with Extend |for working with big numbers |
|SWAP |Swap Register words | |
|-----------|-----------------------------| |
|TAS |Test Operand and Set |handy sometimes |
|TRAP |Trap |calls the OS on our ATARI |
|TRAPcc |Trap Conditionally |handy for debugging |
|TRAPV |Trap on Overflow |handy for debugging |
|TST |Test Operand |faster than cmpi #0,... |
|-----------|-----------------------------| |
|UNLK |Unlink |used in combination with link |
|UNPK |Unpack |useless |
+-----------------------------------------------------------------------------+