Annotation of tme/ic/m68k/m68k-iset.txt, revision 1.1

1.1     ! root        1: ! m68k-iset.txt: the m68k instruction set
        !             2: 
        !             3: ! $Id: m68k-iset.txt,v 1.4 2003/04/26 20:59:38 fredette Exp $
        !             4: 
        !             5: ! load some common EA categories:
        !             6: eax-cat all ro         yyyyyyyyyyyynnn
        !             7: eax-cat data ro                ynyyyyyyyyyynnn
        !             8: eax-cat datalt rw      ynyyyyyyynnnnnn ! example: andi pp 122
        !             9: eax-cat memalt rw      nnyyyyyyynnnnnn
        !            10: eax-cat control un     nnynnyyyyyynnnn 
        !            11: 
        !            12: 0000 0000 0011 1100 ori_ccr #8                 ! ori_ccr pp 258
        !            13: 0000 0000 0111 1100 ori_sr #16                 ! ori_sr pp 480
        !            14: 0000 0000 ssxx xxxx or.s #s, xs/datalt         ! ori pp 256
        !            15: 
        !            16: 0000 0010 0011 1100 andi_ccr #8                        ! andi_ccr pp 123
        !            17: 0000 0010 0111 1100 andi_sr #16                        ! andi_sr pp 455
        !            18: 0000 0010 ssxx xxxx and.s #s, xs/datalt                ! andi pp 121
        !            19: 
        !            20: 0000 0100 ssxx xxxx sub.s #s, xs/datalt                ! subi pp 282
        !            21: 
        !            22: .if m68020
        !            23: 0000 0110 1100 0ddd rtm %d.32                  ! rtm pp 270
        !            24: 0000 0110 1100 1aaa rtm %a.32                  ! rtm pp 270
        !            25: 0000 0110 11xx xxxx callm #8, x0/control       ! callm pp 167
        !            26: .endif
        !            27: 
        !            28: 0000 0110 ssxx xxxx add.s #s, xs/datalt                ! addi pp 112
        !            29: 
        !            30: .if m68020 || m68030
        !            31: specop specop16 cmp2_chk2
        !            32: 0000 0ss0 11xx xxxx cmp2_chk2 X, x0/control    ! chk2 pp 174, cmp2 pp 185
        !            33: specop specop16 cas
        !            34: 0000 1SS0 11xx xxxx cas.S X, x0/memalt/un      ! cas pp 169
        !            35: specop cas2 cas2
        !            36: 0000 1100 1111 1100 cas2_16                    ! cas2 pp 169
        !            37: 0000 1110 1111 1100 cas2_32                    ! cas2 pp 169
        !            38: .endif
        !            39: 
        !            40: 0000 1010 0011 1100 eori_ccr #8                        ! eori_ccr pp 207
        !            41: 0000 1010 0111 1100 eori_sr #16                        ! eori_sr pp 463
        !            42: 0000 1010 ssxx xxxx eor.s #s, xs/datalt                ! eori pp 205
        !            43: 
        !            44: ! cmpi addressing modes are unusual. per pp 183, immediate is 
        !            45: ! never allowed, and on the 000 and 010, PC-relative addressing 
        !            46: ! modes are not allowed:
        !            47: .if m68000 || m68010
        !            48: eax-cat cmpi ro ynyyyyyyynnnnnn
        !            49: .endif
        !            50: .if m68020 || m68030
        !            51: eax-cat cmpi ro ynyyyyyyyyynnnn
        !            52: .endif
        !            53: 0000 1100 ssxx xxxx cmp.s #s, xs/cmpi          ! cmpi pp 182
        !            54: 
        !            55: eax-cat bitro ro nnyyyyyyyyyynnn
        !            56: eax-cat bitrw rw nnyyyyyyynnnnnn
        !            57: 0000 1000 0000 0ddd btst32 #8, %d.32           ! btst pp 164
        !            58: 0000 1000 00xx xxxx btst8 #8, x8/bitro         ! btst pp 164
        !            59: 0000 1000 0100 0ddd bchg32 #8, %d.32           ! bchg pp 130
        !            60: 0000 1000 01xx xxxx bchg8 #8, x8/bitrw         ! bchg pp 130
        !            61: 0000 1000 1000 0ddd bclr32 #8, %d.32           ! bclr pp 133
        !            62: 0000 1000 10xx xxxx bclr8 #8, x8/bitrw         ! bclr pp 133
        !            63: 0000 1000 1100 0ddd bset32 #8, %d.32           ! bset pp 159
        !            64: 0000 1000 11xx xxxx bset8 #8, x8/bitrw         ! bset pp 159
        !            65: 
        !            66: .if m68010 || m68020 || m68030
        !            67: ! the moves specop handling forces the right EA cycles:
        !            68: specop moves moves.s
        !            69: 0000 1110 ssxx xxxx moves.s X, xs/memalt       ! moves pp 477
        !            70: .endif
        !            71: 
        !            72: 0000 ddd1 0000 0DDD btst32 %d.8, %D.32         ! btst pp 164
        !            73: 0000 ddd1 00xx xxxx btst8 %d.8, x8/bitro       ! btst pp 164
        !            74: 0000 ddd1 0100 0DDD bchg32 %d.8, %D.32         ! bchg pp 130
        !            75: 0000 ddd1 01xx xxxx bchg8 %d.8, x8/bitrw       ! bchg pp 130
        !            76: 0000 ddd1 1000 0DDD bclr32 %d.8, %D.32         ! bclr pp 133
        !            77: 0000 ddd1 10xx xxxx bclr8 %d.8, x8/bitrw       ! bclr pp 133
        !            78: 0000 ddd1 1100 0DDD bset32 %d.8, %D.32         ! bset pp 159
        !            79: 0000 ddd1 11xx xxxx bset8 %d.8, x8/bitrw       ! bset pp 159
        !            80: 
        !            81: ! we don't decode the data register field, to allow for better EA
        !            82: ! submap reuse, and this is a rare function anyways:
        !            83: 0000 ddd1 0000 1aaa movep_mr16 X, %a.32                ! movep pp 234
        !            84: 0000 ddd1 0100 1aaa movep_mr32 X, %a.32                ! movep pp 234
        !            85: 0000 ddd1 1000 1aaa movep_rm16 X, %a.32                ! movep pp 234
        !            86: 0000 ddd1 1100 1aaa movep_rm32 X, %a.32                ! movep pp 234
        !            87: 
        !            88: 0010 aaa0 01xx xxxx movea32 %a.32, x32/all     ! movea pp 222
        !            89: 0011 aaa0 01xx xxxx movea16 %a.32, x16/all     ! movea pp 222
        !            90: 
        !            91: 00SS yyyy yyxx xxxx move.S yS/datalt/wo, xS/all        ! move pp 219
        !            92: 
        !            93: ! move_from_sr isn't privileged on the 68000:
        !            94: .if m68000
        !            95: 0100 0000 11xx xxxx move_from_sr0 X, x16/datalt        ! move_from_sr pp 228
        !            96: .endif
        !            97: .if m68010 || m68020 || m68030
        !            98: 0100 0000 11xx xxxx move_from_sr X, x16/datalt/wo      ! move_from_sr pp 470
        !            99: 0100 0010 11xx xxxx move_from_ccr X, x16/datalt/wo     ! move_from_ccr pp 224
        !           100: .endif
        !           101: 
        !           102: 0100 0000 ssxx xxxx negx.s X, xs/datalt                ! negx pp 249
        !           103: 
        !           104: ! the EA is read before it is written on on the 68000, pp 177
        !           105: .if m68000
        !           106: 0100 0010 ssxx xxxx clr.s X, xs/datalt         ! clr pp 176
        !           107: .endif
        !           108: .if m68010 || m68020 || m68030
        !           109: 0100 0010 ssxx xxxx clr.s X, xs/datalt/wo      ! clr pp 176
        !           110: .endif
        !           111: 
        !           112: 0100 0100 11xx xxxx move_to_ccr X, x16/data    ! move_to_ccr pp 226
        !           113: 
        !           114: 0100 0100 ssxx xxxx neg.s X, xs/datalt         ! neg pp 246
        !           115: 
        !           116: 0100 0110 11xx xxxx move_to_sr X, x16/data     ! move_to_sr pp 472
        !           117: 
        !           118: 0100 0110 ssxx xxxx not.s X, xs/datalt         ! not pp 251
        !           119: 
        !           120: 0100 1000 1000 0ddd extw X, %d.16              ! ext pp 209
        !           121: 0100 1000 1100 0ddd extl X, %d.32              ! ext pp 209
        !           122: .if m68020 || m68030
        !           123: 0100 1001 1100 0ddd extbl X, %d.32             ! ext pp 209
        !           124: .endif
        !           125: 
        !           126: .if m68020 || m68030
        !           127: 0100 1000 0000 1aaa link #32, %a.32            ! link pp 214
        !           128: .endif
        !           129: 
        !           130: 0100 1000 00xx xxxx nbcd X, x8/datalt          ! nbcd pp 244
        !           131: 
        !           132: 0100 1000 0100 0ddd swap X, %d.32              ! swap pp 288
        !           133: 
        !           134: .if m68010 || m68020 || m68030
        !           135: 0100 1000 0100 1??? bkpt                       ! bkpt pp 157
        !           136: .endif
        !           137: 
        !           138: 0100 1000 01xx xxxx pea        X, x0/control           ! pea pp 262
        !           139: 
        !           140: specop illegal illegal
        !           141: 0100 1010 1111 1100 illegal                    ! illegal pp 210
        !           142: 
        !           143: 0100 1010 1100 0ddd tas_r X, %d.8              ! tas pp 289
        !           144: 0100 1010 11xx xxxx tas X, x0/memalt/un                ! tas pp 289
        !           145: 
        !           146: ! tst addressing modes are unusual. per pp 296, on the 68000
        !           147: ! and 68010, PC-relative addressing modes and immediates are not 
        !           148: ! allowed:
        !           149: .if m68000 || m68010
        !           150: eax-cat tst ro ynyyyyyyynnnnnn
        !           151: 0100 1010 ssxx xxxx tst.s X, xs/tst            ! tst pp 295
        !           152: .endif
        !           153: .if m68020 || m68030
        !           154: 0100 1010 ssxx xxxx tst.s X, xs/all            ! tst pp 295
        !           155: .endif
        !           156: 
        !           157: .if m68020 || m68030
        !           158: specop mulul mulul
        !           159: specop divul divul
        !           160: 0100 1100 00xx xxxx mulul X, x32/data          ! mulsl pp 238, mulul pp 241
        !           161: 0100 1100 01xx xxxx divul X, x32/data          ! divsl pp 195, divul pp 199
        !           162: .endif
        !           163: 
        !           164: 0100 1110 0100 ???? trap                       ! trap pp 291
        !           165: 
        !           166: 0100 1110 0101 0aaa link #16S32, %a.32         ! link pp 214
        !           167: 
        !           168: 0100 1110 0101 1aaa unlk %a.32                 ! unlk pp 297
        !           169: 
        !           170: 0100 1110 0110 ?aaa move_usp X, %a.32          ! move_usp pp 474
        !           171: 
        !           172: 0100 1110 0111 0000 reset                      ! reset pp 536
        !           173: 
        !           174: 0100 1110 0111 0001 nop                                ! nop pp 250
        !           175: 
        !           176: specop specop16 stop
        !           177: 0100 1110 0111 0010 stop                       ! stop pp 538
        !           178: 
        !           179: 0100 1110 0111 0011 rte                                ! rte pp 537
        !           180: 
        !           181: .if m68010 || m68020 || m68030
        !           182: 0100 1110 0111 0100 rtd #16S32                 ! rtd pp 269
        !           183: .endif
        !           184: 
        !           185: 0100 1110 0111 0101 rts                                ! rts pp 272
        !           186: 
        !           187: 0100 1110 0111 0110 trapv                      ! trapv pp 294
        !           188: 
        !           189: 0100 1110 0111 0111 rtr                                ! rtr pp 271
        !           190: 
        !           191: .if m68010 || m68020 || m68030
        !           192: specop specop16 movec
        !           193: 0100 1110 0111 101? movec                      ! movec pp 475
        !           194: .endif
        !           195: 
        !           196: 0100 1110 10xx xxxx jsr X, x0/control          ! jsr pp 212
        !           197: 0100 1110 11xx xxxx jmp X, x0/control          ! jmp pp 211
        !           198: 
        !           199: eax-cat movem_rm un nnynyyyyynnnnnn
        !           200: eax-cat movem_mr un nnyynyyyyyynnnn
        !           201: specop specop16 movem_rm.s movem_mr.s
        !           202: 0100 1000 10xx xxxx movem_rm16 X, x0/movem_rm  ! movem pp 231
        !           203: 0100 1000 11xx xxxx movem_rm32 X, x0/movem_rm  ! movem pp 231
        !           204: 0100 1100 10xx xxxx movem_mr16 X, x0/movem_mr  ! movem pp 231
        !           205: 0100 1100 11xx xxxx movem_mr32 X, x0/movem_mr  ! movem pp 231
        !           206: 
        !           207: 0100 aaa1 11xx xxxx lea %a.32, x0/control      ! lea pp 213
        !           208: 
        !           209: 0100 ddd1 00xx xxxx chk32 %d.32, x32/data      ! chk pp 173
        !           210: 0100 ddd1 10xx xxxx chk16 %d.16, x16/data      ! chk pp 173
        !           211: 
        !           212: eax-cat alterable rw ynyyyyyyynnnnnn
        !           213: 0101 qqq0 ss00 1aaa adda32 #q.32, %a.32                ! addq pp 114
        !           214: 0101 qqq0 ssxx xxxx add.s #q.s, xs/alterable   ! addq pp 114
        !           215: 0101 qqq1 ss00 1aaa suba32 #q.32, %a.32                ! subq pp 284
        !           216: 0101 qqq1 ssxx xxxx sub.s #q.s, xs/alterable   ! subq pp 284
        !           217: 
        !           218: 0101 cccc 1100 1ddd dbcc %d.16, #16            ! dbcc pp 193
        !           219: 
        !           220: .if m68020 || m68030
        !           221: 0101 cccc 1111 1010 trapcc #16                 ! trapcc pp 292
        !           222: 0101 cccc 1111 1011 trapcc #32                 ! trapcc pp 292
        !           223: 0101 cccc 1111 1100 trapcc                     ! trapcc pp 292
        !           224: .endif
        !           225: 
        !           226: 0101 cccc 11xx xxxx scc X, x8/datalt           ! scc pp 275
        !           227: 
        !           228: ! bcc pp 128, bra pp 158, bsr pp 162
        !           229: specop bcc bcc
        !           230: 0110 cccc ???? ???? bcc                                
        !           231: 
        !           232: 0111 ddd0 ???? ???? moveq32 X, %d.32           ! moveq pp 237
        !           233: 
        !           234: 1000 ddd0 11xx xxxx divu #d, x16/data          ! divu pp 199
        !           235: 
        !           236: 1000 ???1 0000 ???? sbcd                       ! sbcd pp 273
        !           237: .if m68020 || m68030
        !           238: specop specop16 pack unpk
        !           239: 1000 ???1 0100 ???? pack                       ! pack pp 259
        !           240: 1000 ???1 1000 ???? unpk                       ! unpk pp 298
        !           241: .endif
        !           242: 
        !           243: 1000 ddd1 11xx xxxx divs #d, x16/data          ! divs pp 195
        !           244: 
        !           245: 1000 ddd0 ssxx xxxx or.s xs/data, %d.s         ! or pp 253
        !           246: 1000 ddd1 ssxx xxxx or.s %d.s, xs/memalt       ! or pp 253
        !           247: 
        !           248: 1001 ???1 ss00 ???? subx.s                     ! subx pp 286
        !           249: 
        !           250: 1001 ddd0 ssxx xxxx sub.s xs/all, %d.s         ! sub pp 277
        !           251: 1001 ddd1 ssxx xxxx sub.s %d.s, xs/memalt      ! sub pp 277
        !           252: 1001 aaa0 11xx xxxx suba16 x16/all, %a.32      ! suba pp 280
        !           253: 1001 aaa1 11xx xxxx suba32 x32/all, %a.32      ! suba pp 280
        !           254: 
        !           255: 1011 ???1 ss00 1??? cmpm.s                     ! cmpm pp 184
        !           256: 
        !           257: 1011 ddd0 ssxx xxxx cmp.s xs/all, %d.s         ! cmp pp 178
        !           258: 1011 ddd1 ssxx xxxx eor.s %d.s, xs/datalt      ! eor pp 203
        !           259: 1011 aaa0 11xx xxxx cmpa16 x16/all, %a.32      ! cmpa pp 180
        !           260: 1011 aaa1 11xx xxxx cmp32 x32/all, %a.32       ! cmpa pp 180
        !           261: 
        !           262: 1100 ddd0 11xx xxxx mulu #d, x16/data          ! mulu pp 241
        !           263: 
        !           264: 1100 ???1 0000 ???? abcd                       ! abcd pp 105
        !           265: 
        !           266: 1100 ddd1 11xx xxxx muls #d, x16/data          ! muls pp 238
        !           267: 
        !           268: 1100 ddd1 0100 0DDD exg %d.32, %D.32           ! exg pp 208
        !           269: 1100 aaa1 0100 1AAA exg %a.32, %A.32           ! exg pp 208
        !           270: 1100 ddd1 1000 1aaa exg %d.32, %a.32           ! exg pp 208
        !           271: 
        !           272: 1100 ddd0 ssxx xxxx and.s xs/data, %d.s                ! and pp 118
        !           273: 1100 ddd1 ssxx xxxx and.s %d.s, xs/memalt      ! and pp 118
        !           274: 
        !           275: 1101 ???1 ss00 ???? addx.s                     ! addx pp 116
        !           276: 
        !           277: 1101 ddd0 ssxx xxxx add.s xs/all, %d.s         ! add pp 107
        !           278: 1101 ddd1 ssxx xxxx add.s %d.s, xs/memalt      ! add pp 107
        !           279: 1101 aaa0 11xx xxxx adda16 x16/all, %a.32      ! adda pp 110
        !           280: 1101 aaa1 11xx xxxx adda32 x32/all, %a.32      ! adda pp 110
        !           281: 
        !           282: 1110 0000 11xx xxxx asr16 #1.8, x16/memalt     ! asr pp 124
        !           283: 1110 0001 11xx xxxx asl16 #1.8, x16/memalt     ! asl pp 124
        !           284: 
        !           285: 1110 0010 11xx xxxx lsr16 #1.8, x16/memalt     ! lsr pp 216
        !           286: 1110 0011 11xx xxxx lsl16 #1.8, x16/memalt     ! lsl pp 216
        !           287: 
        !           288: 1110 0100 11xx xxxx roxr16 #1.8, x16/memalt    ! roxr pp 263
        !           289: 1110 0101 11xx xxxx roxl16 #1.8, x16/memalt    ! roxl pp 263
        !           290: 
        !           291: 1110 0110 11xx xxxx ror16 #1.8, x16/memalt     ! ror pp 263
        !           292: 1110 0111 11xx xxxx rol16 #1.8, x16/memalt     ! rol pp 263
        !           293: 
        !           294: .if m68020 || m68030
        !           295: eax-cat bitfieldro un nnynnyyyyyynnnn
        !           296: eax-cat bitfieldrw un nnynnyyyynnnnnn
        !           297: specop specop16 bftst bfextu bfchg bfexts bfclr bfffo bfset bfins
        !           298: 1110 1000 1100 0ddd bftst                      ! bftst pp 154
        !           299: 1110 1000 11xx xxxx bftst X, x0/bitfieldro     ! bftst pp 154
        !           300: 1110 1001 1100 0ddd bfextu                     ! bfextu pp 143
        !           301: 1110 1001 11xx xxxx bfextu X, x0/bitfieldro    ! bfextu pp 143
        !           302: 1110 1010 1100 0ddd bfchg                      ! bfchg pp 137
        !           303: 1110 1010 11xx xxxx bfchg X, x0/bitfieldrw     ! bfchg pp 137
        !           304: 1110 1011 1100 0ddd bfexts                     ! bfexts pp 141
        !           305: 1110 1011 11xx xxxx bfexts X, x0/bitfieldro    ! bfexts pp 141
        !           306: 1110 1100 1100 0ddd bfclr                      ! bfclr pp 138
        !           307: 1110 1100 11xx xxxx bfclr X, x0/bitfieldrw     ! bfclr pp 138
        !           308: 1110 1101 1100 0ddd bfffo                      ! bfffo pp 146
        !           309: 1110 1101 11xx xxxx bfffo X, x0/bitfieldro     ! bfffo pp 146
        !           310: 1110 1110 1100 0ddd bfset                      ! bfset pp 152
        !           311: 1110 1110 11xx xxxx bfset X, x0/bitfieldrw     ! bfset pp 152
        !           312: 1110 1111 1100 0ddd bfins                      ! bfins pp 149
        !           313: 1110 1111 11xx xxxx bfins X, x0/bitfieldrw     ! bfins pp 149
        !           314: .endif
        !           315: 
        !           316: 1110 qqq0 ss00 0ddd asr.s #q.8, %d.s           ! asr pp 124
        !           317: 1110 DDD0 ss10 0ddd asr.s %D.8, %d.s           ! asr pp 124
        !           318: 1110 qqq1 ss00 0ddd asl.s #q.8, %d.s           ! asl pp 124
        !           319: 1110 DDD1 ss10 0ddd asl.s %D.8, %d.s           ! asl pp 124
        !           320: 
        !           321: 1110 qqq0 ss00 1ddd lsr.s #q.8, %d.s           ! lsr pp 216
        !           322: 1110 DDD0 ss10 1ddd lsr.s %D.8, %d.s           ! lsr pp 216
        !           323: 1110 qqq1 ss00 1ddd lsl.s #q.8, %d.s           ! lsl pp 216
        !           324: 1110 DDD1 ss10 1ddd lsl.s %D.8, %d.s           ! lsl pp 216
        !           325: 
        !           326: 1110 qqq0 ss01 0ddd roxr.s #q.8, %d.s          ! roxr pp 263
        !           327: 1110 DDD0 ss11 0ddd roxr.s %D.8, %d.s          ! roxr pp 263
        !           328: 1110 qqq1 ss01 0ddd roxl.s #q.8, %d.s          ! roxl pp 263
        !           329: 1110 DDD1 ss11 0ddd roxl.s %D.8, %d.s          ! roxl pp 263
        !           330: 
        !           331: 1110 qqq0 ss01 1ddd ror.s #q.8, %d.s           ! ror pp 263
        !           332: 1110 DDD0 ss11 1ddd ror.s %D.8, %d.s           ! ror pp 263
        !           333: 1110 qqq1 ss01 1ddd rol.s #q.8, %d.s           ! rol pp 263
        !           334: 1110 DDD1 ss11 1ddd rol.s %D.8, %d.s           ! rol pp 263

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.