Annotation of nono/m680x0/testdis.cpp, revision 1.1

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2018 [email protected]
        !             4: //
        !             5: 
        !             6: #include "header.h"
        !             7: #include "disasm.h"
        !             8: #include "m68030.h"
        !             9: #include "mystring.h"
        !            10: #include <vector>
        !            11: 
        !            12: struct {
        !            13:        std::vector<uint16> inst;
        !            14:        std::string expected;
        !            15: } table[] = {
        !            16:        { { 0x0000, 0x89ab },                           "ori.b   #$ab,d0" },
        !            17:        { { 0x003c, 0x89ab },                           "ori.b   #$ab,ccr" },
        !            18:        { { 0x0040, 0x89ab },                           "ori.w   #$89ab,d0" },
        !            19:        { { 0x007c, 0x89ab },                           "ori.w   #$89ab,sr" },
        !            20:        { { 0x0080, 0x89ab, 0xcdef },           "ori.l   #$89abcdef,d0" },
        !            21:        { { 0x00c0, 0x9000 },                           "cmp2.b  d0,a1" },
        !            22:        { { 0x00f8, 0x9000, 0x89ab },           "cmp2.b  $89ab,a1" },
        !            23:        { { 0x00c0, 0x9800 },                           "chk2.b  d0,a1" },
        !            24:        { { 0x00f8, 0x9800, 0x89ab },           "chk2.b  $89ab,a1" },
        !            25:        { { 0x0300 },                                           "btst.l  d1,d0" },
        !            26:        { { 0x0310 },                                           "btst.b  d1,(a0)" },
        !            27:        { { 0x030a, 0x89ab },                           "movep.w ($89ab,a2),d1" },
        !            28:        { { 0x0340 },                                           "bchg.l  d1,d0" },
        !            29:        { { 0x0350 },                                           "bchg.b  d1,(a0)" },
        !            30:        { { 0x034a, 0x89ab },                           "movep.l ($89ab,a2),d1" },
        !            31:        { { 0x0380 },                                           "bclr.l  d1,d0" },
        !            32:        { { 0x0390 },                                           "bclr.b  d1,(a0)" },
        !            33:        { { 0x038a, 0x89ab },                           "movep.w d1,($89ab,a2)" },
        !            34:        { { 0x03c0 },                                           "bset.l  d1,d0" },
        !            35:        { { 0x03d0 },                                           "bset.b  d1,(a0)" },
        !            36:        { { 0x03ca, 0x89ab },                           "movep.l d1,($89ab,a2)" },
        !            37:        { { 0x0200, 0x89ab },                           "andi.b  #$ab,d0" },
        !            38:        { { 0x023c, 0x89ab },                           "andi.b  #$ab,ccr" },
        !            39:        { { 0x0240, 0x89ab },                           "andi.w  #$89ab,d0" },
        !            40:        { { 0x027c, 0x89ab },                           "andi.w  #$89ab,sr" },
        !            41:        { { 0x0280, 0x89ab, 0xcdef },           "andi.l  #$89abcdef,d0" },
        !            42:        { { 0x02c0, 0x9000 },                           "cmp2.w  d0,a1" },
        !            43:        { { 0x02f8, 0x9000, 0x89ab },           "cmp2.w  $89ab,a1" },
        !            44:        { { 0x02c0, 0x9800 },                           "chk2.w  d0,a1" },
        !            45:        { { 0x02f8, 0x9800, 0x89ab },           "chk2.w  $89ab,a1" },
        !            46:        { { 0x0400, 0x89ab },                           "subi.b  #$ab,d0" },
        !            47:        { { 0x0440, 0x89ab },                           "subi.w  #$89ab,d0" },
        !            48:        { { 0x0480, 0x89ab, 0xcdef },           "subi.l  #$89abcdef,d0" },
        !            49:        { { 0x04c0, 0x9000 },                           "cmp2.l  d0,a1" },
        !            50:        { { 0x04f8, 0x9000, 0x89ab },           "cmp2.l  $89ab,a1" },
        !            51:        { { 0x04c0, 0x9800 },                           "chk2.l  d0,a1" },
        !            52:        { { 0x04f8, 0x9800, 0x89ab },           "chk2.l  $89ab,a1" },
        !            53:        { { 0x0600, 0x89ab },                           "addi.b  #$ab,d0" },
        !            54:        { { 0x0640, 0x89ab },                           "addi.w  #$89ab,d0" },
        !            55:        { { 0x0680, 0x89ab, 0xcdef },           "addi.l  #$89abcdef,d0" },
        !            56:        { { 0x0800, 0x00ff },                           "btst.l  #31,d0" },
        !            57:        { { 0x0838, 0x00ff, 0x89ab },           "btst.b  #7,$89ab" },
        !            58:        { { 0x0840, 0x00ff },                           "bchg.l  #31,d0" },
        !            59:        { { 0x0878, 0x00ff, 0x89ab },           "bchg.b  #7,$89ab" },
        !            60:        { { 0x0880, 0x00ff },                           "bclr.l  #31,d0" },
        !            61:        { { 0x08b8, 0x00ff, 0x89ab },           "bclr.b  #7,$89ab" },
        !            62:        { { 0x08c0, 0x00ff },                           "bset.l  #31,d0" },
        !            63:        { { 0x08f8, 0x00ff, 0x89ab },           "bset.b  #7,$89ab" },
        !            64:        { { 0x0a00, 0x89ab },                           "eori.b  #$ab,d0" },
        !            65:        { { 0x0a3c, 0x89ab },                           "eori.b  #$ab,ccr" },
        !            66:        { { 0x0a40, 0x89ab },                           "eori.w  #$89ab,d0" },
        !            67:        { { 0x0a7c, 0x89ab },                           "eori.w  #$89ab,sr" },
        !            68:        { { 0x0a80, 0x89ab, 0xcdef },           "eori.l  #$89abcdef,d0" },
        !            69:        { { 0x0ac0, 0x0081 },                           "cas.b   d1,d2,d0" },
        !            70:        { { 0x0af8, 0x0081, 0x89ab },           "cas.b   d1,d2,$89ab" },
        !            71:        { { 0x0c00, 0x89ab },                           "cmpi.b  #$ab,d0" },
        !            72:        { { 0x0c40, 0x89ab },                           "cmpi.w  #$89ab,d0" },
        !            73:        { { 0x0c80, 0x89ab, 0xcdef },           "cmpi.l  #$89abcdef,d0" },
        !            74:        { { 0x0cc0, 0x0081 },                           "cas.w   d1,d2,d0" },
        !            75:        { { 0x0cf8, 0x0081, 0x89ab },           "cas.w   d1,d2,$89ab" },
        !            76:        { { 0x0cfc, 0xb081, 0xe144 },           "cas2.w  d1:d4,d2:d5,(a3):(a6)" },
        !            77:        { { 0x0e38, 0x9000, 0x89ab },           "moves.b $89ab,a1" },
        !            78:        { { 0x0e38, 0x9800, 0x89ab },           "moves.b a1,$89ab" },
        !            79:        { { 0x0e78, 0x9000, 0x89ab },           "moves.w $89ab,a1" },
        !            80:        { { 0x0e78, 0x9800, 0x89ab },           "moves.w a1,$89ab" },
        !            81:        { { 0x0eb8, 0x9000, 0x89ab },           "moves.l $89ab,a1" },
        !            82:        { { 0x0eb8, 0x9800, 0x89ab },           "moves.l a1,$89ab" },
        !            83:        { { 0x0ec0, 0x0081 },                           "cas.l   d1,d2,d0" },
        !            84:        { { 0x0ef8, 0x0081, 0x89ab },           "cas.l   d1,d2,$89ab" },
        !            85:        { { 0x0efc, 0xb081, 0xe144 },           "cas2.l  d1:d4,d2:d5,(a3):(a6)" },
        !            86: 
        !            87:        { { 0x1200 },                                           "move.b  d0,d1" },
        !            88:        { { 0x1280 },                                           "move.b  d0,(a1)" },
        !            89:        { { 0x12c0 },                                           "move.b  d0,(a1)+" },
        !            90:        { { 0x1300 },                                           "move.b  d0,-(a1)" },
        !            91:        { { 0x1340, 0x89ab },                           "move.b  d0,-$7655(a1)" },
        !            92:        { { 0x1380, 0x20fe },                           "move.b  d0,-$02(a1,d2.w)" },
        !            93:        { { 0x11c0, 0x89ab },                           "move.b  d0,$89ab" },
        !            94:        { { 0x13c0, 0x89ab, 0xcdef },           "move.b  d0,$89abcdef" },
        !            95:        { { 0x2200 },                                           "move.l  d0,d1" },
        !            96:        { { 0x2240 },                                           "movea.l d0,a1" },
        !            97:        { { 0x2280 },                                           "move.l  d0,(a1)" },
        !            98:        { { 0x22c0 },                                           "move.l  d0,(a1)+" },
        !            99:        { { 0x2300 },                                           "move.l  d0,-(a1)" },
        !           100:        { { 0x2340, 0x89ab },                           "move.l  d0,-$7655(a1)" },
        !           101:        { { 0x2380, 0x20fe },                           "move.l  d0,-$02(a1,d2.w)" },
        !           102:        { { 0x21c0, 0x89ab },                           "move.l  d0,$89ab" },
        !           103:        { { 0x23c0, 0x89ab, 0xcdef },           "move.l  d0,$89abcdef" },
        !           104:        { { 0x3200 },                                           "move.w  d0,d1" },
        !           105:        { { 0x3240 },                                           "movea.w d0,a1" },
        !           106:        // movea.w $ffff89ab,a1 のように表示したい気もするけど、今の所
        !           107:        // 構造上面倒なのでちょっとおいておく。
        !           108:        { { 0x327c, 0x89ab },                           "movea.w #$89ab,a1" },
        !           109:        { { 0x3280 },                                           "move.w  d0,(a1)" },
        !           110:        { { 0x32c0 },                                           "move.w  d0,(a1)+" },
        !           111:        { { 0x3300 },                                           "move.w  d0,-(a1)" },
        !           112:        { { 0x3340, 0x89ab },                           "move.w  d0,-$7655(a1)" },
        !           113:        { { 0x3380, 0x20fe },                           "move.w  d0,-$02(a1,d2.w)" },
        !           114:        { { 0x31c0, 0x89ab },                           "move.w  d0,$89ab" },
        !           115:        { { 0x33c0, 0x89ab, 0xcdef },           "move.w  d0,$89abcdef" },
        !           116: 
        !           117:        { { 0x4000 },                                           "negx.b  d0" },
        !           118:        { { 0x4040 },                                           "negx.w  d0" },
        !           119:        { { 0x4080 },                                           "negx.l  d0" },
        !           120:        { { 0x40c0 },                                           "move.w  sr,d0" },
        !           121:        { { 0x4300 },                                           "chk.l   d0,d1" },
        !           122:        { { 0x4380 },                                           "chk.w   d0,d1" },
        !           123:        { { 0x43d0 },                                           "lea.l   (a0),a1" },
        !           124:        { { 0x49c0 },                                           "extb.l  d0" },
        !           125:        { { 0x4200 },                                           "clr.b   d0" },
        !           126:        { { 0x4240 },                                           "clr.w   d0" },
        !           127:        { { 0x4280 },                                           "clr.l   d0" },
        !           128:        { { 0x42c0 },                                           "move.w  ccr,d0" },
        !           129:        { { 0x4400 },                                           "neg.b   d0" },
        !           130:        { { 0x4440 },                                           "neg.w   d0" },
        !           131:        { { 0x4480 },                                           "neg.l   d0" },
        !           132:        { { 0x44c0 },                                           "move.w  d0,ccr" },
        !           133:        { { 0x4600 },                                           "not.b   d0" },
        !           134:        { { 0x4640 },                                           "not.w   d0" },
        !           135:        { { 0x4680 },                                           "not.l   d0" },
        !           136:        { { 0x46c0 },                                           "move.w  d0,sr" },
        !           137:        { { 0x4800 },                                           "nbcd.b  d0" },
        !           138:        { { 0x4808, 0x89ab, 0xcdef },           "link.l  a0,#-$76543211" },
        !           139:        { { 0x4840 },                                           "swap.w  d0" },
        !           140:        { { 0x4849 },                                           "bkpt    #1" },
        !           141:        { { 0x4850 },                                           "pea.l   (a0)" },
        !           142:        { { 0x4880 },                                           "ext.w   d0" },
        !           143:        { { 0x4890, 0x0101 },                           "movem.w d0/a0,(a0)" },
        !           144:        { { 0x48b8, 0x0101, 0x89ab },           "movem.w d0/a0,$89ab" },
        !           145:        { { 0x48c0 },                                           "ext.l   d0" },
        !           146:        { { 0x48d0, 0x0101 },                           "movem.l d0/a0,(a0)" },
        !           147:        { { 0x48f8, 0x0101, 0x89ab },           "movem.l d0/a0,$89ab" },
        !           148:        { { 0x4a00 },                                           "tst.b   d0" },
        !           149:        { { 0x4a40 },                                           "tst.w   d0" },
        !           150:        { { 0x4a80 },                                           "tst.l   d0" },
        !           151:        { { 0x4ac0 },                                           "tas.b   d0" },
        !           152:        { { 0x4afc },                                           "illegal" },
        !           153:        // ※ mul[us].l <ea>,dh:dl (h==l) はニーモニックとしては正しい
        !           154:        { { 0x4c38, 0x1000, 0x89ab },           "mulu.l  $89ab,d1" },
        !           155:        { { 0x4c38, 0x1401, 0x89ab },           "mulu.l  $89ab,d1:d1" }, // ※
        !           156:        { { 0x4c38, 0x1402, 0x89ab },           "mulu.l  $89ab,d2:d1" },
        !           157:        { { 0x4c38, 0x1800, 0x89ab },           "muls.l  $89ab,d1" },
        !           158:        { { 0x4c38, 0x1c01, 0x89ab },           "muls.l  $89ab,d1:d1" }, // ※
        !           159:        { { 0x4c38, 0x1c02, 0x89ab },           "muls.l  $89ab,d2:d1" },
        !           160:        { { 0x4c78, 0x1001, 0x89ab },           "divu.l  $89ab,d1" },
        !           161:        { { 0x4c78, 0x1002, 0x89ab },           "divu.l  $89ab,d2:d1" },
        !           162:        { { 0x4c78, 0x1402, 0x89ab },           "divul.l $89ab,d2:d1" },
        !           163:        { { 0x4c78, 0x1801, 0x89ab },           "divs.l  $89ab,d1" },
        !           164:        { { 0x4c78, 0x1802, 0x89ab },           "divs.l  $89ab,d2:d1" },
        !           165:        { { 0x4c78, 0x1c02, 0x89ab },           "divsl.l $89ab,d2:d1" },
        !           166:        { { 0x4c90, 0x0101 },                           "movem.w (a0),d0/a0" },
        !           167:        { { 0x4cb8, 0x0101, 0x89ab },           "movem.w $89ab,d0/a0" },
        !           168:        { { 0x4cd0, 0x0101 },                           "movem.l (a0),d0/a0" },
        !           169:        { { 0x4cf8, 0x0101, 0x89ab },           "movem.l $89ab,d0/a0" },
        !           170:        { { 0x4e4f },                                           "trap    #15" },
        !           171:        { { 0x4e50, 0x89ab },                           "link.w  a0,#-$7655" },
        !           172:        { { 0x4e58 },                                           "unlk    a0" },
        !           173:        { { 0x4e60 },                                           "move.l  a0,usp" },
        !           174:        { { 0x4e68 },                                           "move.l  usp,a0" },
        !           175:        { { 0x4e70 },                                           "reset" },
        !           176:        { { 0x4e71 },                                           "nop" },
        !           177:        { { 0x4e72, 0x89ab },                           "stop    #$89ab" },
        !           178:        { { 0x4e73 },                                           "rte" },
        !           179:        { { 0x4e74, 0x89ab },                           "rtd     #$89ab" },
        !           180:        { { 0x4e75 },                                           "rts" },
        !           181:        { { 0x4e76 },                                           "trapv" },
        !           182:        { { 0x4e77 },                                           "rtr" },
        !           183:        { { 0x4e7a, 0x8801 },                           "movec.l vbr,a0" },
        !           184:        { { 0x4e7b, 0x8801 },                           "movec.l a0,vbr" },
        !           185:        { { 0x4e90 },                                           "jsr     (a0)" },
        !           186:        { { 0x4ed0 },                                           "jmp     (a0)" },
        !           187: 
        !           188:        { { 0x5000 },                                           "addq.b  #8,d0" },
        !           189:        { { 0x5040 },                                           "addq.w  #8,d0" },
        !           190:        { { 0x5048 },                                           "addq.w  #8,a0" },      // .l にする?
        !           191:        { { 0x5080 },                                           "addq.l  #8,d0" },
        !           192:        { { 0x5088 },                                           "addq.l  #8,a0" },
        !           193:        { { 0x50c0 },                                           "st.b    d0" },
        !           194:        { { 0x50c8, 0xfffe },                           "dbt.w   d0,$00000100" },
        !           195:        { { 0x51c8, 0xfffe },                           "dbra.w  d0,$00000100" },
        !           196:        { { 0x50fa, 0x89ab },                           "trapt.w #$89ab" },
        !           197:        { { 0x50fb, 0x89ab, 0xcdef },           "trapt.l #$89abcdef" },
        !           198:        { { 0x50fc },                                           "trapt" },
        !           199:        { { 0x5100 },                                           "subq.b  #8,d0" },
        !           200:        { { 0x5140 },                                           "subq.w  #8,d0" },
        !           201:        { { 0x5148 },                                           "subq.w  #8,a0" },      // .l にする?
        !           202:        { { 0x5180 },                                           "subq.l  #8,d0" },
        !           203:        { { 0x5188 },                                           "subq.l  #8,a0" },
        !           204: 
        !           205:        { { 0x6000, 0xfffe },                           "bra.w   $00000100" },
        !           206:        { { 0x60fe },                                           "bra.b   $00000100" },
        !           207:        { { 0x60ff, 0xffff, 0xfffe },           "bra.l   $00000100" },
        !           208:        { { 0x6100, 0xfffe },                           "bsr.w   $00000100" },
        !           209:        { { 0x61fe },                                           "bsr.b   $00000100" },
        !           210:        { { 0x61ff, 0xffff, 0xfffe },           "bsr.l   $00000100" },
        !           211:        { { 0x6200, 0xfffe },                           "bhi.w   $00000100" },
        !           212:        { { 0x62fe },                                           "bhi.b   $00000100" },
        !           213:        { { 0x62ff, 0xffff, 0xfffe },           "bhi.l   $00000100" },
        !           214: 
        !           215:        { { 0x727f },                                           "moveq.l #$7f,d1" },
        !           216:        { { 0x7280 },                                           "moveq.l #$ffffff80,d1" },
        !           217: 
        !           218:        { { 0x8200 },                                           "or.b    d0,d1" },
        !           219:        { { 0x8240 },                                           "or.w    d0,d1" },
        !           220:        { { 0x8280 },                                           "or.l    d0,d1" },
        !           221:        { { 0x82c0 },                                           "divu.w  d0,d1" },
        !           222:        { { 0x8300 },                                           "sbcd.b  d0,d1" },
        !           223:        { { 0x8308 },                                           "sbcd.b  -(a0),-(a1)" },
        !           224:        { { 0x8310 },                                           "or.b    d1,(a0)" },
        !           225:        { { 0x8340, 0x89ab },                           "pack    d0,d1,#$89ab" },
        !           226:        { { 0x8348, 0x89ab },                           "pack    -(a0),-(a1),#$89ab" },
        !           227:        { { 0x8350 },                                           "or.w    d1,(a0)" },
        !           228:        { { 0x8380, 0x89ab },                           "unpk    d0,d1,#$89ab" },
        !           229:        { { 0x8388, 0x89ab },                           "unpk    -(a0),-(a1),#$89ab" },
        !           230:        { { 0x8390 },                                           "or.l    d1,(a0)" },
        !           231:        { { 0x83c0 },                                           "divs.w  d0,d1" },
        !           232: 
        !           233:        { { 0x9200 },                                           "sub.b   d0,d1" },
        !           234:        { { 0x9240 },                                           "sub.w   d0,d1" },
        !           235:        { { 0x9280 },                                           "sub.l   d0,d1" },
        !           236:        { { 0x92c0 },                                           "suba.w  d0,a1" },
        !           237:        { { 0x9300 },                                           "subx.b  d0,d1" },
        !           238:        { { 0x9308 },                                           "subx.b  -(a0),-(a1)" },
        !           239:        { { 0x9310 },                                           "sub.b   d1,(a0)" },
        !           240:        { { 0x9340 },                                           "subx.w  d0,d1" },
        !           241:        { { 0x9348 },                                           "subx.w  -(a0),-(a1)" },
        !           242:        { { 0x9350 },                                           "sub.w   d1,(a0)" },
        !           243:        { { 0x9380 },                                           "subx.l  d0,d1" },
        !           244:        { { 0x9388 },                                           "subx.l  -(a0),-(a1)" },
        !           245:        { { 0x9390 },                                           "sub.l   d1,(a0)" },
        !           246:        { { 0x93c0 },                                           "suba.l  d0,a1" },
        !           247: 
        !           248:        // A-Line
        !           249: 
        !           250:        { { 0xb200 },                                           "cmp.b   d0,d1" },
        !           251:        { { 0xb240 },                                           "cmp.w   d0,d1" },
        !           252:        { { 0xb280 },                                           "cmp.l   d0,d1" },
        !           253:        { { 0xb2c0 },                                           "cmpa.w  d0,a1" },
        !           254:        { { 0xb300 },                                           "eor.b   d1,d0" },
        !           255:        { { 0xb308 },                                           "cmpm.b  (a0)+,(a1)+" },
        !           256:        { { 0xb340 },                                           "eor.w   d1,d0" },
        !           257:        { { 0xb348 },                                           "cmpm.w  (a0)+,(a1)+" },
        !           258:        { { 0xb380 },                                           "eor.l   d1,d0" },
        !           259:        { { 0xb388 },                                           "cmpm.l  (a0)+,(a1)+" },
        !           260:        { { 0xb3c0 },                                           "cmpa.l  d0,a1" },
        !           261: 
        !           262:        { { 0xc200 },                                           "and.b   d0,d1" },
        !           263:        { { 0xc240 },                                           "and.w   d0,d1" },
        !           264:        { { 0xc280 },                                           "and.l   d0,d1" },
        !           265:        { { 0xc2c0 },                                           "mulu.w  d0,d1" },
        !           266:        { { 0xc300 },                                           "abcd.b  d0,d1" },
        !           267:        { { 0xc308 },                                           "abcd.b  -(a0),-(a1)" },
        !           268:        { { 0xc310 },                                           "and.b   d1,(a0)" },
        !           269:        { { 0xc340 },                                           "exg.l   d1,d0" },
        !           270:        { { 0xc348 },                                           "exg.l   a1,a0" },
        !           271:        { { 0xc350 },                                           "and.w   d1,(a0)" },
        !           272:        { { 0xc388 },                                           "exg.l   d1,a0" },
        !           273:        { { 0xc390 },                                           "and.l   d1,(a0)" },
        !           274:        { { 0xc3c0 },                                           "muls.w  d0,d1" },
        !           275: 
        !           276:        { { 0xd200 },                                           "add.b   d0,d1" },
        !           277:        { { 0xd240 },                                           "add.w   d0,d1" },
        !           278:        { { 0xd280 },                                           "add.l   d0,d1" },
        !           279:        { { 0xd2c0 },                                           "adda.w  d0,a1" },
        !           280:        { { 0xd300 },                                           "addx.b  d0,d1" },
        !           281:        { { 0xd308 },                                           "addx.b  -(a0),-(a1)" },
        !           282:        { { 0xd310 },                                           "add.b   d1,(a0)" },
        !           283:        { { 0xd340 },                                           "addx.w  d0,d1" },
        !           284:        { { 0xd348 },                                           "addx.w  -(a0),-(a1)" },
        !           285:        { { 0xd350 },                                           "add.w   d1,(a0)" },
        !           286:        { { 0xd380 },                                           "addx.l  d0,d1" },
        !           287:        { { 0xd388 },                                           "addx.l  -(a0),-(a1)" },
        !           288:        { { 0xd390 },                                           "add.l   d1,(a0)" },
        !           289:        { { 0xd3c0 },                                           "adda.l  d0,a1" },
        !           290: 
        !           291:        { { 0xe000 },                                           "asr.b   #8,d0" },
        !           292:        { { 0xe008 },                                           "lsr.b   #8,d0" },
        !           293:        { { 0xe010 },                                           "roxr.b  #8,d0" },
        !           294:        { { 0xe018 },                                           "ror.b   #8,d0" },
        !           295:        { { 0xe220 },                                           "asr.b   d1,d0" },
        !           296:        { { 0xe228 },                                           "lsr.b   d1,d0" },
        !           297:        { { 0xe230 },                                           "roxr.b  d1,d0" },
        !           298:        { { 0xe238 },                                           "ror.b   d1,d0" },
        !           299: 
        !           300:        { { 0xe040 },                                           "asr.w   #8,d0" },
        !           301:        { { 0xe048 },                                           "lsr.w   #8,d0" },
        !           302:        { { 0xe050 },                                           "roxr.w  #8,d0" },
        !           303:        { { 0xe058 },                                           "ror.w   #8,d0" },
        !           304:        { { 0xe260 },                                           "asr.w   d1,d0" },
        !           305:        { { 0xe268 },                                           "lsr.w   d1,d0" },
        !           306:        { { 0xe270 },                                           "roxr.w  d1,d0" },
        !           307:        { { 0xe278 },                                           "ror.w   d1,d0" },
        !           308: 
        !           309:        { { 0xe080 },                                           "asr.l   #8,d0" },
        !           310:        { { 0xe088 },                                           "lsr.l   #8,d0" },
        !           311:        { { 0xe090 },                                           "roxr.l  #8,d0" },
        !           312:        { { 0xe098 },                                           "ror.l   #8,d0" },
        !           313:        { { 0xe2a0 },                                           "asr.l   d1,d0" },
        !           314:        { { 0xe2a8 },                                           "lsr.l   d1,d0" },
        !           315:        { { 0xe2b0 },                                           "roxr.l  d1,d0" },
        !           316:        { { 0xe2b8 },                                           "ror.l   d1,d0" },
        !           317: 
        !           318:        { { 0xe0c0 },                                           "asr.w   d0" },
        !           319: 
        !           320:        { { 0xe100 },                                           "asl.b   #8,d0" },
        !           321:        { { 0xe108 },                                           "lsl.b   #8,d0" },
        !           322:        { { 0xe110 },                                           "roxl.b  #8,d0" },
        !           323:        { { 0xe118 },                                           "rol.b   #8,d0" },
        !           324:        { { 0xe320 },                                           "asl.b   d1,d0" },
        !           325:        { { 0xe328 },                                           "lsl.b   d1,d0" },
        !           326:        { { 0xe330 },                                           "roxl.b  d1,d0" },
        !           327:        { { 0xe338 },                                           "rol.b   d1,d0" },
        !           328: 
        !           329:        { { 0xe140 },                                           "asl.w   #8,d0" },
        !           330:        { { 0xe148 },                                           "lsl.w   #8,d0" },
        !           331:        { { 0xe150 },                                           "roxl.w  #8,d0" },
        !           332:        { { 0xe158 },                                           "rol.w   #8,d0" },
        !           333:        { { 0xe360 },                                           "asl.w   d1,d0" },
        !           334:        { { 0xe368 },                                           "lsl.w   d1,d0" },
        !           335:        { { 0xe370 },                                           "roxl.w  d1,d0" },
        !           336:        { { 0xe378 },                                           "rol.w   d1,d0" },
        !           337: 
        !           338:        { { 0xe180 },                                           "asl.l   #8,d0" },
        !           339:        { { 0xe188 },                                           "lsl.l   #8,d0" },
        !           340:        { { 0xe190 },                                           "roxl.l  #8,d0" },
        !           341:        { { 0xe198 },                                           "rol.l   #8,d0" },
        !           342:        { { 0xe3a0 },                                           "asl.l   d1,d0" },
        !           343:        { { 0xe3a8 },                                           "lsl.l   d1,d0" },
        !           344:        { { 0xe3b0 },                                           "roxl.l  d1,d0" },
        !           345:        { { 0xe3b8 },                                           "rol.l   d1,d0" },
        !           346: 
        !           347:        { { 0xe1c0 },                                           "asl.w   d0" },
        !           348: 
        !           349:        { { 0xe2c0 },                                           "lsr.w   d0" },
        !           350:        { { 0xe3c0 },                                           "lsl.w   d0" },
        !           351:        { { 0xe4c0 },                                           "roxr.w  d0" },
        !           352:        { { 0xe5c0 },                                           "roxl.w  d0" },
        !           353:        { { 0xe6c0 },                                           "ror.w   d0" },
        !           354:        { { 0xe7c0 },                                           "rol.w   d0" },
        !           355: 
        !           356:        { { 0xe8c0, 0x0862 },                           "bftst   d0{d1:d2}" },
        !           357:        { { 0xe9c0, 0x3862 },                           "bfextu  d0{d1:d2},d3" },
        !           358:        { { 0xeac0, 0x0862 },                           "bfchg   d0{d1:d2}" },
        !           359:        { { 0xebc0, 0x3862 },                           "bfexts  d0{d1:d2},d3" },
        !           360:        { { 0xecc0, 0x0862 },                           "bfclr   d0{d1:d2}" },
        !           361:        { { 0xedc0, 0x3862 },                           "bfffo   d0{d1:d2},d3" },
        !           362:        { { 0xeec0, 0x0862 },                           "bfset   d0{d1:d2}" },
        !           363:        { { 0xefc0, 0x3862 },                           "bfins   d3,d0{d1:d2}" },
        !           364:        { { 0xe8f8, 0x0862, 0x89ab },           "bftst   $89ab{d1:d2}" },
        !           365:        { { 0xe9f8, 0x3862, 0x89ab },           "bfextu  $89ab{d1:d2},d3" },
        !           366:        { { 0xeaf8, 0x0862, 0x89ab },           "bfchg   $89ab{d1:d2}" },
        !           367:        { { 0xebf8, 0x3862, 0x89ab },           "bfexts  $89ab{d1:d2},d3" },
        !           368:        { { 0xecf8, 0x0862, 0x89ab },           "bfclr   $89ab{d1:d2}" },
        !           369:        { { 0xedf8, 0x3862, 0x89ab },           "bfffo   $89ab{d1:d2},d3" },
        !           370:        { { 0xeef8, 0x0862, 0x89ab },           "bfset   $89ab{d1:d2}" },
        !           371:        { { 0xeff8, 0x3862, 0x89ab },           "bfins   d3,$89ab{d1:d2}" },
        !           372:        { { 0xe8c0, 0x0022 }, "bftst   d0{#0:d2}" },    // offset 0
        !           373:        { { 0xe8c0, 0x07e2 }, "bftst   d0{#31:d2}" },   // offset 31
        !           374:        { { 0xe8c0, 0x0841 }, "bftst   d0{d1:#1}" },    // width 1
        !           375:        { { 0xe8c0, 0x0840 }, "bftst   d0{d1:#32}" },   // width 32
        !           376:        { { 0xe8c0, 0x0000 }, "bftst   d0{#0:#32}" },   // oもwも即値
        !           377: 
        !           378:        // EA
        !           379:        { { 0x4a07 },                                           "tst.b   d7" },                 // dn
        !           380:        { { 0x4a0f },                                           "tst.b   a7" },                 // an
        !           381:        { { 0x4a17 },                                           "tst.b   (a7)" },               // (an)
        !           382:        { { 0x4a1f },                                           "tst.b   (a7)+" },              // (an)+
        !           383:        { { 0x4a27 },                                           "tst.b   -(a7)" },              // -(an)
        !           384:        { { 0x4a2f, 0x89ab },                           "tst.b   -$7655(a7)" }, // d16(an)
        !           385:        { { 0x4a38, 0x89ab },                           "tst.b   $89ab" },              // abs.w
        !           386:        { { 0x4a39, 0x89ab, 0xcdef },           "tst.b   $89abcdef" },  // abs.l
        !           387:        { { 0x4a3a, 0xfffe },                           "tst.b   $00000100(pc)" }, // d16(pc)
        !           388:        { { 0x4a3c, 0x89ab },                           "tst.b   #$ab" },               // #imm
        !           389:        // (an,ix) 短縮フォーマット
        !           390:        { { 0x4a37, 0x9000 },                           "tst.b   (a7,a1.w)" },
        !           391:        { { 0x4a37, 0x9201 },                           "tst.b   $01(a7,a1.w*2)" },
        !           392:        { { 0x4a37, 0x947f },                           "tst.b   $7f(a7,a1.w*4)" },
        !           393:        { { 0x4a37, 0x9680 },                           "tst.b   -$80(a7,a1.w*8)" },
        !           394:        { { 0x4a37, 0x98ff },                           "tst.b   -$01(a7,a1.l)" },
        !           395:        { { 0x4a37, 0x9a00 },                           "tst.b   (a7,a1.l*2)" },
        !           396:        { { 0x4a37, 0x9c00 },                           "tst.b   (a7,a1.l*4)" },
        !           397:        { { 0x4a37, 0x9e00 },                           "tst.b   (a7,a1.l*8)" },
        !           398:        // (an,ix) フルフォーマット
        !           399: #define BW     0x89ab
        !           400: #define BL     0x89ab, 0xcdef
        !           401: #define OW  0xcdef
        !           402: #define OL  0xcdef, 0x0123
        !           403: #define MA(x, ...)     { 0x4a37, x, __VA_ARGS__ }
        !           404: #define T                      "tst.b   "
        !           405:        // an,bs=0, bdsize=1
        !           406:        { MA(0x1110),                   T "(a7,d1.w)" },
        !           407:        { MA(0x1111),                   T "([a7,d1.w])" },
        !           408:        { MA(0x1112, OW),               T "([a7,d1.w],-$3211)" },
        !           409:        { MA(0x1113, OL),               T "([a7,d1.w],-$3210fedd)" },
        !           410:        { MA(0x1115),                   T "([a7],d1.w)" },
        !           411:        { MA(0x1116, OW),               T "([a7],d1.w,-$3211)" },
        !           412:        { MA(0x1117, OL),               T "([a7],d1.w,-$3210fedd)" },
        !           413:        { MA(0x1150),                   T "(a7)" },
        !           414:        { MA(0x1151),                   T "([a7])" },
        !           415:        { MA(0x1152, OW),               T "([a7],-$3211)" },
        !           416:        { MA(0x1153, OL),               T "([a7],-$3210fedd)" },
        !           417:        // an,bs=0, bdsize=2
        !           418:        { MA(0x1120, BW),               T "(-$7655,a7,d1.w)" },
        !           419:        { MA(0x1121, BW),               T "([-$7655,a7,d1.w])" },
        !           420:        { MA(0x1122, BW, OW),   T "([-$7655,a7,d1.w],-$3211)" },
        !           421:        { MA(0x1123, BW, OL),   T "([-$7655,a7,d1.w],-$3210fedd)" },
        !           422:        { MA(0x1125, BW),               T "([-$7655,a7],d1.w)" },
        !           423:        { MA(0x1126, BW, OW),   T "([-$7655,a7],d1.w,-$3211)" },
        !           424:        { MA(0x1127, BW, OL),   T "([-$7655,a7],d1.w,-$3210fedd)" },
        !           425:        { MA(0x1160, BW),               T "(-$7655,a7)" },
        !           426:        { MA(0x1161, BW),               T "([-$7655,a7])" },
        !           427:        { MA(0x1162, BW, OW),   T "([-$7655,a7],-$3211)" },
        !           428:        { MA(0x1163, BW, OL),   T "([-$7655,a7],-$3210fedd)" },
        !           429:        // an,bs=0, bdsize=3
        !           430:        { MA(0x1130, BL),               T "(-$76543211,a7,d1.w)" },
        !           431:        { MA(0x1131, BL),               T "([-$76543211,a7,d1.w])" },
        !           432:        { MA(0x1132, BL, OW),   T "([-$76543211,a7,d1.w],-$3211)" },
        !           433:        { MA(0x1133, BL, OL),   T "([-$76543211,a7,d1.w],-$3210fedd)" },
        !           434:        { MA(0x1135, BL),               T "([-$76543211,a7],d1.w)" },
        !           435:        { MA(0x1136, BL, OW),   T "([-$76543211,a7],d1.w,-$3211)" },
        !           436:        { MA(0x1137, BL, OL),   T "([-$76543211,a7],d1.w,-$3210fedd)" },
        !           437:        { MA(0x1170, BL),               T "(-$76543211,a7)" },
        !           438:        { MA(0x1171, BL),               T "([-$76543211,a7])" },
        !           439:        { MA(0x1172, BL, OW),   T "([-$76543211,a7],-$3211)" },
        !           440:        { MA(0x1173, BL, OL),   T "([-$76543211,a7],-$3210fedd)" },
        !           441:        // an,bs=1, bdsize=1
        !           442:        { MA(0x1190),                   T "(za7,d1.w)" },
        !           443:        { MA(0x1191),                   T "([za7,d1.w])" },
        !           444:        { MA(0x1192, OW),               T "([za7,d1.w],-$3211)" },
        !           445:        { MA(0x1193, OL),               T "([za7,d1.w],-$3210fedd)" },
        !           446:        { MA(0x1195),                   T "([za7],d1.w)" },
        !           447:        { MA(0x1196, OW),               T "([za7],d1.w,-$3211)" },
        !           448:        { MA(0x1197, OL),               T "([za7],d1.w,-$3210fedd)" },
        !           449:        { MA(0x11d0),                   T "(za7)" },
        !           450:        { MA(0x11d1),                   T "([za7])" },
        !           451:        { MA(0x11d2, OW),               T "([za7],-$3211)" },
        !           452:        { MA(0x11d3, OL),               T "([za7],-$3210fedd)" },
        !           453:        // an,bs=1, bdsize=2
        !           454:        { MA(0x11a0, BW),               T "(-$7655,za7,d1.w)" },
        !           455:        { MA(0x11a1, BW),               T "([-$7655,za7,d1.w])" },
        !           456:        { MA(0x11a2, BW, OW),   T "([-$7655,za7,d1.w],-$3211)" },
        !           457:        { MA(0x11a3, BW, OL),   T "([-$7655,za7,d1.w],-$3210fedd)" },
        !           458:        { MA(0x11a5, BW),               T "([-$7655,za7],d1.w)" },
        !           459:        { MA(0x11a6, BW, OW),   T "([-$7655,za7],d1.w,-$3211)" },
        !           460:        { MA(0x11a7, BW, OL),   T "([-$7655,za7],d1.w,-$3210fedd)" },
        !           461:        { MA(0x11e0, BW),               T "(-$7655,za7)" },
        !           462:        { MA(0x11e1, BW),               T "([-$7655,za7])" },
        !           463:        { MA(0x11e2, BW, OW),   T "([-$7655,za7],-$3211)" },
        !           464:        { MA(0x11e3, BW, OL),   T "([-$7655,za7],-$3210fedd)" },
        !           465:        // an,bs=1, bdsize=3
        !           466:        { MA(0x11b0, BL),               T "(-$76543211,za7,d1.w)" },
        !           467:        { MA(0x11b1, BL),               T "([-$76543211,za7,d1.w])" },
        !           468:        { MA(0x11b2, BL, OW),   T "([-$76543211,za7,d1.w],-$3211)" },
        !           469:        { MA(0x11b3, BL, OL),   T "([-$76543211,za7,d1.w],-$3210fedd)" },
        !           470:        { MA(0x11b5, BL),               T "([-$76543211,za7],d1.w)" },
        !           471:        { MA(0x11b6, BL, OW),   T "([-$76543211,za7],d1.w,-$3211)" },
        !           472:        { MA(0x11b7, BL, OL),   T "([-$76543211,za7],d1.w,-$3210fedd)" },
        !           473:        { MA(0x11f0, BL),               T "(-$76543211,za7)" },
        !           474:        { MA(0x11f1, BL),               T "([-$76543211,za7])" },
        !           475:        { MA(0x11f2, BL, OW),   T "([-$76543211,za7],-$3211)" },
        !           476:        { MA(0x11f3, BL, OL),   T "([-$76543211,za7],-$3210fedd)" },
        !           477: #undef MA
        !           478: #undef T
        !           479: #define MA(x, ...)     { 0x4a3b, x, __VA_ARGS__ }
        !           480: #define T                      "tst.b   "
        !           481:        // pc,bs=0, bdsize=1
        !           482:        { MA(0x1110),                   T "(pc,d1.w)" },
        !           483:        { MA(0x1111),                   T "([pc,d1.w])" },
        !           484:        { MA(0x1112, OW),               T "([pc,d1.w],-$3211)" },
        !           485:        { MA(0x1113, OL),               T "([pc,d1.w],-$3210fedd)" },
        !           486:        { MA(0x1115),                   T "([pc],d1.w)" },
        !           487:        { MA(0x1116, OW),               T "([pc],d1.w,-$3211)" },
        !           488:        { MA(0x1117, OL),               T "([pc],d1.w,-$3210fedd)" },
        !           489:        { MA(0x1150),                   T "(pc)" },
        !           490:        { MA(0x1151),                   T "([pc])" },
        !           491:        { MA(0x1152, OW),               T "([pc],-$3211)" },
        !           492:        { MA(0x1153, OL),               T "([pc],-$3210fedd)" },
        !           493:        // pc,bs=0, bdsize=2
        !           494:        { MA(0x1120, BW),               T "(-$7655,pc,d1.w)" },
        !           495:        { MA(0x1121, BW),               T "([-$7655,pc,d1.w])" },
        !           496:        { MA(0x1122, BW, OW),   T "([-$7655,pc,d1.w],-$3211)" },
        !           497:        { MA(0x1123, BW, OL),   T "([-$7655,pc,d1.w],-$3210fedd)" },
        !           498:        { MA(0x1125, BW),               T "([-$7655,pc],d1.w)" },
        !           499:        { MA(0x1126, BW, OW),   T "([-$7655,pc],d1.w,-$3211)" },
        !           500:        { MA(0x1127, BW, OL),   T "([-$7655,pc],d1.w,-$3210fedd)" },
        !           501:        { MA(0x1160, BW),               T "(-$7655,pc)" },
        !           502:        { MA(0x1161, BW),               T "([-$7655,pc])" },
        !           503:        { MA(0x1162, BW, OW),   T "([-$7655,pc],-$3211)" },
        !           504:        { MA(0x1163, BW, OL),   T "([-$7655,pc],-$3210fedd)" },
        !           505:        // an,bs=0, bdsize=3
        !           506:        { MA(0x1130, BL),               T "(-$76543211,pc,d1.w)" },
        !           507:        { MA(0x1131, BL),               T "([-$76543211,pc,d1.w])" },
        !           508:        { MA(0x1132, BL, OW),   T "([-$76543211,pc,d1.w],-$3211)" },
        !           509:        { MA(0x1133, BL, OL),   T "([-$76543211,pc,d1.w],-$3210fedd)" },
        !           510:        { MA(0x1135, BL),               T "([-$76543211,pc],d1.w)" },
        !           511:        { MA(0x1136, BL, OW),   T "([-$76543211,pc],d1.w,-$3211)" },
        !           512:        { MA(0x1137, BL, OL),   T "([-$76543211,pc],d1.w,-$3210fedd)" },
        !           513:        { MA(0x1170, BL),               T "(-$76543211,pc)" },
        !           514:        { MA(0x1171, BL),               T "([-$76543211,pc])" },
        !           515:        { MA(0x1172, BL, OW),   T "([-$76543211,pc],-$3211)" },
        !           516:        { MA(0x1173, BL, OL),   T "([-$76543211,pc],-$3210fedd)" },
        !           517:        // an,bs=1, bdsize=1
        !           518:        { MA(0x1190),                   T "(zpc,d1.w)" },
        !           519:        { MA(0x1191),                   T "([zpc,d1.w])" },
        !           520:        { MA(0x1192, OW),               T "([zpc,d1.w],-$3211)" },
        !           521:        { MA(0x1193, OL),               T "([zpc,d1.w],-$3210fedd)" },
        !           522:        { MA(0x1195),                   T "([zpc],d1.w)" },
        !           523:        { MA(0x1196, OW),               T "([zpc],d1.w,-$3211)" },
        !           524:        { MA(0x1197, OL),               T "([zpc],d1.w,-$3210fedd)" },
        !           525:        { MA(0x11d0),                   T "(zpc)" },
        !           526:        { MA(0x11d1),                   T "([zpc])" },
        !           527:        { MA(0x11d2, OW),               T "([zpc],-$3211)" },
        !           528:        { MA(0x11d3, OL),               T "([zpc],-$3210fedd)" },
        !           529:        // an,bs=1, bdsize=2
        !           530:        { MA(0x11a0, BW),               T "(-$7655,zpc,d1.w)" },
        !           531:        { MA(0x11a1, BW),               T "([-$7655,zpc,d1.w])" },
        !           532:        { MA(0x11a2, BW, OW),   T "([-$7655,zpc,d1.w],-$3211)" },
        !           533:        { MA(0x11a3, BW, OL),   T "([-$7655,zpc,d1.w],-$3210fedd)" },
        !           534:        { MA(0x11a5, BW),               T "([-$7655,zpc],d1.w)" },
        !           535:        { MA(0x11a6, BW, OW),   T "([-$7655,zpc],d1.w,-$3211)" },
        !           536:        { MA(0x11a7, BW, OL),   T "([-$7655,zpc],d1.w,-$3210fedd)" },
        !           537:        { MA(0x11e0, BW),               T "(-$7655,zpc)" },
        !           538:        { MA(0x11e1, BW),               T "([-$7655,zpc])" },
        !           539:        { MA(0x11e2, BW, OW),   T "([-$7655,zpc],-$3211)" },
        !           540:        { MA(0x11e3, BW, OL),   T "([-$7655,zpc],-$3210fedd)" },
        !           541:        // an,bs=1, bdsize=3
        !           542:        { MA(0x11b0, BL),               T "(-$76543211,zpc,d1.w)" },
        !           543:        { MA(0x11b1, BL),               T "([-$76543211,zpc,d1.w])" },
        !           544:        { MA(0x11b2, BL, OW),   T "([-$76543211,zpc,d1.w],-$3211)" },
        !           545:        { MA(0x11b3, BL, OL),   T "([-$76543211,zpc,d1.w],-$3210fedd)" },
        !           546:        { MA(0x11b5, BL),               T "([-$76543211,zpc],d1.w)" },
        !           547:        { MA(0x11b6, BL, OW),   T "([-$76543211,zpc],d1.w,-$3211)" },
        !           548:        { MA(0x11b7, BL, OL),   T "([-$76543211,zpc],d1.w,-$3210fedd)" },
        !           549:        { MA(0x11f0, BL),               T "(-$76543211,zpc)" },
        !           550:        { MA(0x11f1, BL),               T "([-$76543211,zpc])" },
        !           551:        { MA(0x11f2, BL, OW),   T "([-$76543211,zpc],-$3211)" },
        !           552:        { MA(0x11f3, BL, OL),   T "([-$76543211,zpc],-$3210fedd)" },
        !           553: #undef MA
        !           554: #undef T
        !           555: 
        !           556:        // movem (制御・ポストインクリメント)
        !           557:        { { 0x48d0, 0x0000 }, "movem.l noregs,(a0)" },          // リストなし
        !           558:        { { 0x48d0, 0x0001 }, "movem.l d0,(a0)" },                      // 単体
        !           559:        { { 0x48d0, 0x0006 }, "movem.l d1-d2,(a0)" },           // dで連続
        !           560:        { { 0x48d0, 0x00f6 }, "movem.l d1-d2/d4-d7,(a0)" },     // 区間が複数
        !           561:        { { 0x48d0, 0x01ff }, "movem.l d0-d7/a0,(a0)" },        // d/a をまたぐ
        !           562:        { { 0x48d0, 0x03ff }, "movem.l d0-d7/a0-a1,(a0)" },     // d/a をまたいで連続
        !           563:        { { 0x48d0, 0xff00 }, "movem.l a0-a7,(a0)" },           // aで連続
        !           564:        { { 0x48d0, 0x6186 }, "movem.l d1-d2/d7/a0/a5-a6,(a0)" }, // 複雑なの
        !           565:        // movem (プリデクリメント)
        !           566:        { { 0x48e0, 0x0000 }, "movem.l noregs,-(a0)" },         // リストなし
        !           567:        { { 0x48e0, 0x8000 }, "movem.l d0,-(a0)" },                     // 単体
        !           568:        { { 0x48e0, 0x6000 }, "movem.l d1-d2,-(a0)" },          // dで連続
        !           569:        { { 0x48e0, 0x6f00 }, "movem.l d1-d2/d4-d7,-(a0)" },// 区間が複数
        !           570:        { { 0x48e0, 0xff80 }, "movem.l d0-d7/a0,-(a0)" },       // d/a をまたぐ
        !           571:        { { 0x48e0, 0xffc0 }, "movem.l d0-d7/a0-a1,-(a0)" },// d/a をまたいで連続
        !           572:        { { 0x48e0, 0x00ff }, "movem.l a0-a7,-(a0)" },          // aで連続
        !           573:        { { 0x48e0, 0x6186 }, "movem.l d1-d2/d7/a0/a5-a6,-(a0)" }, // 複雑なの
        !           574:        // movec (制御レジスタだけ確認、向きはもういいだろう)
        !           575:        { { 0x4e7b, 0x0000 }, "movec.l d0,sfc" },
        !           576:        { { 0x4e7b, 0x0001 }, "movec.l d0,dfc" },
        !           577:        { { 0x4e7b, 0x0002 }, "movec.l d0,cacr" },
        !           578:        { { 0x4e7b, 0x8800 }, "movec.l a0,usp" },
        !           579:        { { 0x4e7b, 0x8801 }, "movec.l a0,vbr" },
        !           580:        { { 0x4e7b, 0x8802 }, "movec.l a0,caar" },
        !           581:        { { 0x4e7b, 0x8803 }, "movec.l a0,msp" },
        !           582:        { { 0x4e7b, 0x8804 }, "movec.l a0,isp" },
        !           583:        // condition
        !           584:        { { 0x50fc },                   "trapt" },
        !           585:        { { 0x51fc },                   "trapf" },
        !           586:        { { 0x52fc },                   "traphi" },
        !           587:        { { 0x53fc },                   "trapls" },
        !           588:        { { 0x54fc },                   "trapcc" },
        !           589:        { { 0x55fc },                   "trapcs" },
        !           590:        { { 0x56fc },                   "trapne" },
        !           591:        { { 0x57fc },                   "trapeq" },
        !           592:        { { 0x58fc },                   "trapvc" },
        !           593:        { { 0x59fc },                   "trapvs" },
        !           594:        { { 0x5afc },                   "trappl" },
        !           595:        { { 0x5bfc },                   "trapmi" },
        !           596:        { { 0x5cfc },                   "trapge" },
        !           597:        { { 0x5dfc },                   "traplt" },
        !           598:        { { 0x5efc },                   "trapgt" },
        !           599:        { { 0x5ffc },                   "traple" },
        !           600: 
        !           601:        // MMU
        !           602:        { { 0xf010, 0x0800 },                           "pmove.l (a0),tt0" },
        !           603:        { { 0xf010, 0x0900 },                           "pmovefd.l (a0),tt0" },
        !           604:        { { 0xf010, 0x0a00 },                           "pmove.l tt0,(a0)" },
        !           605:        { { 0xf010, 0x0c00 },                           "pmove.l (a0),tt1" },
        !           606:        { { 0xf010, 0x0d00 },                           "pmovefd.l (a0),tt1" },
        !           607:        { { 0xf010, 0x0e00 },                           "pmove.l tt1,(a0)" },
        !           608:        { { 0xf010, 0x2000 },                           "ploadw  sfc,(a0)" },
        !           609:        { { 0xf010, 0x2008 },                           "ploadw  d0,(a0)" },
        !           610:        { { 0xf010, 0x2017 },                           "ploadw  #7,(a0)" },
        !           611:        { { 0xf010, 0x2201 },                           "ploadr  dfc,(a0)" },
        !           612:        { { 0xf010, 0x2208 },                           "ploadr  d0,(a0)" },
        !           613:        { { 0xf010, 0x2210 },                           "ploadr  #0,(a0)" },
        !           614:        { { 0xf000, 0x2400 },                           "pflusha" },
        !           615:        { { 0xf000, 0x30e0 },                           "pflush  sfc,#7" },
        !           616:        { { 0xf000, 0x3011 },                           "pflush  #1,#0" },
        !           617:        { { 0xf010, 0x38e0 },                           "pflush  sfc,#7,(a0)" },
        !           618:        { { 0xf010, 0x3811 },                           "pflush  #1,#0,(a0)" },
        !           619:        { { 0xf010, 0x4000 },                           "pmove.l (a0),tc" },
        !           620:        { { 0xf010, 0x4100 },                           "pmovefd.l (a0),tc" },
        !           621:        { { 0xf010, 0x4200 },                           "pmove.l tc,(a0)" },
        !           622:        { { 0xf010, 0x4800 },                           "pmove.q (a0),srp" },
        !           623:        { { 0xf010, 0x4900 },                           "pmovefd.q (a0),srp" },
        !           624:        { { 0xf010, 0x4a00 },                           "pmove.q srp,(a0)" },
        !           625:        { { 0xf010, 0x4c00 },                           "pmove.q (a0),crp" },
        !           626:        { { 0xf010, 0x4d00 },                           "pmovefd.q (a0),crp" },
        !           627:        { { 0xf010, 0x4e00 },                           "pmove.q crp,(a0)" },
        !           628:        { { 0xf010, 0x6000 },                           "pmove.w (a0),mmusr" },
        !           629:        { { 0xf010, 0x6200 },                           "pmove.w mmusr,(a0)" },
        !           630:        { { 0xf010, 0x8000 },                           "ptestw  sfc,(a0),#0" },
        !           631:        { { 0xf010, 0x9d21 },                           "ptestw  dfc,(a0),#7,a1" },
        !           632:        { { 0xf010, 0x8208 },                           "ptestr  d0,(a0),#0" },
        !           633:        { { 0xf010, 0x9ff7 },                           "ptestr  #7,(a0),#7,a7" },
        !           634: 
        !           635:        // FPU
        !           636:        { { 0xf200, 0x0000 },                           "fmove.x fp0,fp0" },
        !           637:        { { 0xf200, 0x0500 },                           "fmove.x fp1,fp2" },
        !           638:        { { 0xf200, 0x0001 },                           "fint.x  fp0" },
        !           639:        { { 0xf200, 0x0501 },                           "fint.x  fp1,fp2" },
        !           640:        { { 0xf200, 0x0002 },                           "fsinh.x fp0" },
        !           641:        { { 0xf200, 0x0502 },                           "fsinh.x fp1,fp2" },
        !           642:        { { 0xf200, 0x0003 },                           "fintrz.x fp0" },
        !           643:        { { 0xf200, 0x0503 },                           "fintrz.x fp1,fp2" },
        !           644:        { { 0xf200, 0x0004 },                           "fsqrt.x fp0" },
        !           645:        { { 0xf200, 0x0504 },                           "fsqrt.x fp1,fp2" },
        !           646:        { { 0xf200, 0x0006 },                           "flognp1.x fp0" },
        !           647:        { { 0xf200, 0x0506 },                           "flognp1.x fp1,fp2" },
        !           648:        { { 0xf200, 0x0008 },                           "fetoxm1.x fp0" },
        !           649:        { { 0xf200, 0x0508 },                           "fetoxm1.x fp1,fp2" },
        !           650:        { { 0xf200, 0x0009 },                           "ftanh.x fp0" },
        !           651:        { { 0xf200, 0x0509 },                           "ftanh.x fp1,fp2" },
        !           652:        { { 0xf200, 0x000a },                           "fatan.x fp0" },
        !           653:        { { 0xf200, 0x050a },                           "fatan.x fp1,fp2" },
        !           654:        { { 0xf200, 0x000c },                           "fasin.x fp0" },
        !           655:        { { 0xf200, 0x050c },                           "fasin.x fp1,fp2" },
        !           656:        { { 0xf200, 0x000d },                           "fatanh.x fp0" },
        !           657:        { { 0xf200, 0x050d },                           "fatanh.x fp1,fp2" },
        !           658:        { { 0xf200, 0x000e },                           "fsin.x  fp0" },
        !           659:        { { 0xf200, 0x050e },                           "fsin.x  fp1,fp2" },
        !           660:        { { 0xf200, 0x000f },                           "ftan.x  fp0" },
        !           661:        { { 0xf200, 0x050f },                           "ftan.x  fp1,fp2" },
        !           662:        { { 0xf200, 0x0010 },                           "fetox.x fp0" },
        !           663:        { { 0xf200, 0x0510 },                           "fetox.x fp1,fp2" },
        !           664:        { { 0xf200, 0x0011 },                           "ftwotox.x fp0" },
        !           665:        { { 0xf200, 0x0511 },                           "ftwotox.x fp1,fp2" },
        !           666:        { { 0xf200, 0x0012 },                           "ftentox.x fp0" },
        !           667:        { { 0xf200, 0x0512 },                           "ftentox.x fp1,fp2" },
        !           668:        { { 0xf200, 0x0014 },                           "flogn.x fp0" },
        !           669:        { { 0xf200, 0x0514 },                           "flogn.x fp1,fp2" },
        !           670:        { { 0xf200, 0x0015 },                           "flog10.x fp0" },
        !           671:        { { 0xf200, 0x0515 },                           "flog10.x fp1,fp2" },
        !           672:        { { 0xf200, 0x0016 },                           "flog2.x fp0" },
        !           673:        { { 0xf200, 0x0516 },                           "flog2.x fp1,fp2" },
        !           674:        { { 0xf200, 0x0018 },                           "fabs.x  fp0" },
        !           675:        { { 0xf200, 0x0518 },                           "fabs.x  fp1,fp2" },
        !           676:        { { 0xf200, 0x0019 },                           "fcosh.x fp0" },
        !           677:        { { 0xf200, 0x0519 },                           "fcosh.x fp1,fp2" },
        !           678:        { { 0xf200, 0x001a },                           "fneg.x  fp0" },
        !           679:        { { 0xf200, 0x051a },                           "fneg.x  fp1,fp2" },
        !           680:        { { 0xf200, 0x001c },                           "facos.x fp0" },
        !           681:        { { 0xf200, 0x051c },                           "facos.x fp1,fp2" },
        !           682:        { { 0xf200, 0x001d },                           "fcos.x  fp0" },
        !           683:        { { 0xf200, 0x051d },                           "fcos.x  fp1,fp2" },
        !           684:        { { 0xf200, 0x001e },                           "fgetexp.x fp0" },
        !           685:        { { 0xf200, 0x051e },                           "fgetexp.x fp1,fp2" },
        !           686:        { { 0xf200, 0x001f },                           "fgetman.x fp0" },
        !           687:        { { 0xf200, 0x051f },                           "fgetman.x fp1,fp2" },
        !           688:        { { 0xf200, 0x0020 },                           "fdiv.x  fp0" },
        !           689:        { { 0xf200, 0x0520 },                           "fdiv.x  fp1,fp2" },
        !           690:        { { 0xf200, 0x0021 },                           "fmod.x  fp0" },
        !           691:        { { 0xf200, 0x0521 },                           "fmod.x  fp1,fp2" },
        !           692:        { { 0xf200, 0x0022 },                           "fadd.x  fp0" },
        !           693:        { { 0xf200, 0x0522 },                           "fadd.x  fp1,fp2" },
        !           694:        { { 0xf200, 0x0023 },                           "fmul.x  fp0" },
        !           695:        { { 0xf200, 0x0523 },                           "fmul.x  fp1,fp2" },
        !           696:        { { 0xf200, 0x0024 },                           "fsgldiv.x fp0" },
        !           697:        { { 0xf200, 0x0524 },                           "fsgldiv.x fp1,fp2" },
        !           698:        { { 0xf200, 0x0025 },                           "frem.x  fp0" },
        !           699:        { { 0xf200, 0x0525 },                           "frem.x  fp1,fp2" },
        !           700:        { { 0xf200, 0x0026 },                           "fscale.x fp0" },
        !           701:        { { 0xf200, 0x0526 },                           "fscale.x fp1,fp2" },
        !           702:        { { 0xf200, 0x0027 },                           "fsglmul.x fp0" },
        !           703:        { { 0xf200, 0x0527 },                           "fsglmul.x fp1,fp2" },
        !           704:        { { 0xf200, 0x0028 },                           "fsub.x  fp0" },
        !           705:        { { 0xf200, 0x0528 },                           "fsub.x  fp1,fp2" },
        !           706:        { { 0xf200, 0x05b2 },                           "fsincos.x fp1,fp2:fp3" },
        !           707:        { { 0xf200, 0x04b1 },                           "fsincos.x fp1,fp1:fp1" },
        !           708:        { { 0xf200, 0x0038 },                           "fcmp.x  fp0" },
        !           709:        { { 0xf200, 0x0538 },                           "fcmp.x  fp1,fp2" },
        !           710:        { { 0xf200, 0x003a },                           "ftst.x  fp0" },
        !           711:        { { 0xf200, 0x053a },                           "ftst.x  fp1,fp2" },
        !           712: 
        !           713:        { { 0xf210, 0x4080 },                           "fmove.l (a0),fp1" },
        !           714:        { { 0xf210, 0x4480 },                           "fmove.s (a0),fp1" },
        !           715:        { { 0xf210, 0x4880 },                           "fmove.x (a0),fp1" },
        !           716:        { { 0xf210, 0x4c80 },                           "fmove.p (a0),fp1" },
        !           717:        { { 0xf210, 0x5080 },                           "fmove.w (a0),fp1" },
        !           718:        { { 0xf210, 0x5480 },                           "fmove.d (a0),fp1" },
        !           719:        { { 0xf210, 0x5880 },                           "fmove.b (a0),fp1" },
        !           720:        { { 0xf23c, 0x4080, 0x89ab,0xcdef},     "fmove.l #$89abcdef,fp1" },
        !           721:        { { 0xf23c, 0x4480, 0x89ab,0xcdef},     "fmove.s #$89abcdef,fp1" },
        !           722:        { { 0xf23c, 0x4880, 0x89ab,0xcdef, 0x1122,0x3344, 0x5566, 0x7788 },
        !           723:                                                        "fmove.x #$89abcdef_11223344_55667788,fp1" },
        !           724:        { { 0xf23c, 0x4c80, 0x89ab,0xcdef, 0x1122,0x3344, 0x5566, 0x7788 },
        !           725:                                                        "fmove.p #$89abcdef_11223344_55667788,fp1" },
        !           726:        { { 0xf23c, 0x5080, 0x89ab },           "fmove.w #$89ab,fp1" },
        !           727:        { { 0xf23c, 0x5480, 0x89ab,0xcdef, 0x1122,0x3344 },
        !           728:                                                        "fmove.d #$89abcdef_11223344,fp1" },
        !           729:        { { 0xf23c, 0x5880, 0x89ab },           "fmove.b #$ab,fp1" },
        !           730:        // 代表で fmove 以外のを1つだけ
        !           731:        { { 0xf210, 0x4081 },                           "fint.l  (a0),fp1" },
        !           732:        { { 0xf210, 0x4481 },                           "fint.s  (a0),fp1" },
        !           733:        { { 0xf210, 0x4881 },                           "fint.x  (a0),fp1" },
        !           734:        { { 0xf210, 0x4c81 },                           "fint.p  (a0),fp1" },
        !           735:        { { 0xf210, 0x5081 },                           "fint.w  (a0),fp1" },
        !           736:        { { 0xf210, 0x5481 },                           "fint.d  (a0),fp1" },
        !           737:        { { 0xf210, 0x5881 },                           "fint.b  (a0),fp1" },
        !           738: 
        !           739:        { { 0xf200, 0x5c81 },                           "fmovecr.x #$01,fp1" }, // 不正定数
        !           740:        { { 0xf200, 0x5cff },                           "fmovecr.x #$7f,fp1" },
        !           741:        { { 0xf200, 0x5c80 },                           "fmovecr.x #$00<pi>,fp1" },
        !           742:        { { 0xf200, 0x5c8b },                           "fmovecr.x #$0b<log10(2)>,fp1" },
        !           743:        { { 0xf200, 0x5c8c },                           "fmovecr.x #$0c<e>,fp1" },
        !           744:        { { 0xf200, 0x5c8d },                           "fmovecr.x #$0d<log2(e)>,fp1" },
        !           745:        { { 0xf200, 0x5c8e },                           "fmovecr.x #$0e<log10(e)>,fp1" },
        !           746:        { { 0xf200, 0x5c8f },                           "fmovecr.x #$0f<0>,fp1" },
        !           747:        { { 0xf200, 0x5cb0 },                           "fmovecr.x #$30<ln(2)>,fp1" },
        !           748:        { { 0xf200, 0x5cb1 },                           "fmovecr.x #$31<ln(10)>,fp1" },
        !           749:        { { 0xf200, 0x5cb2 },                           "fmovecr.x #$32<1>,fp1" },
        !           750:        { { 0xf200, 0x5cb3 },                           "fmovecr.x #$33<10>,fp1" },
        !           751:        { { 0xf200, 0x5cb4 },                           "fmovecr.x #$34<1e2>,fp1" },
        !           752:        { { 0xf200, 0x5cb5 },                           "fmovecr.x #$35<1e4>,fp1" },
        !           753:        { { 0xf200, 0x5cb6 },                           "fmovecr.x #$36<1e8>,fp1" },
        !           754:        { { 0xf200, 0x5cb7 },                           "fmovecr.x #$37<1e16>,fp1" },
        !           755:        { { 0xf200, 0x5cb8 },                           "fmovecr.x #$38<1e32>,fp1" },
        !           756:        { { 0xf200, 0x5cb9 },                           "fmovecr.x #$39<1e64>,fp1" },
        !           757:        { { 0xf200, 0x5cba },                           "fmovecr.x #$3a<1e128>,fp1" },
        !           758:        { { 0xf200, 0x5cbb },                           "fmovecr.x #$3b<1e256>,fp1" },
        !           759:        { { 0xf200, 0x5cbc },                           "fmovecr.x #$3c<1e512>,fp1" },
        !           760:        { { 0xf200, 0x5cbd },                           "fmovecr.x #$3d<1e1024>,fp1" },
        !           761:        { { 0xf200, 0x5cbe },                           "fmovecr.x #$3e<1e2048>,fp1" },
        !           762:        { { 0xf200, 0x5cbf },                           "fmovecr.x #$3f<1e4096>,fp1" },
        !           763: 
        !           764:        { { 0xf210, 0x6080 },                           "fmove.l fp1,(a0)" },
        !           765:        { { 0xf210, 0x6480 },                           "fmove.s fp1,(a0)" },
        !           766:        { { 0xf210, 0x6880 },                           "fmove.x fp1,(a0)" },
        !           767:        { { 0xf210, 0x6c80 },                           "fmove.p fp1,(a0){#0}" },
        !           768:        { { 0xf210, 0x6cbf },                           "fmove.p fp1,(a0){#63}" },
        !           769:        { { 0xf210, 0x6cc0 },                           "fmove.p fp1,(a0){#-64}" },
        !           770:        { { 0xf210, 0x7080 },                           "fmove.w fp1,(a0)" },
        !           771:        { { 0xf210, 0x7480 },                           "fmove.d fp1,(a0)" },
        !           772:        { { 0xf210, 0x7880 },                           "fmove.b fp1,(a0)" },
        !           773:        { { 0xf210, 0x7cf0 },                           "fmove.p fp1,(a0){d7}" },
        !           774: 
        !           775:        { { 0xf210, 0x8400 },                           "fmove.l (a0),fpiar" },
        !           776:        { { 0xf210, 0x8800 },                           "fmove.l (a0),fpsr" },
        !           777:        { { 0xf210, 0x8c00 },                           "fmovem.l (a0),fpsr/fpiar" },
        !           778:        { { 0xf210, 0x9000 },                           "fmove.l (a0),fpcr" },
        !           779:        { { 0xf210, 0x9400 },                           "fmovem.l (a0),fpcr/fpiar" },
        !           780:        { { 0xf210, 0x9800 },                           "fmovem.l (a0),fpcr/fpsr" },
        !           781:        { { 0xf210, 0x9c00 },                           "fmovem.l (a0),fpcr/fpsr/fpiar" },
        !           782:        { { 0xf23c, 0x8400, 0x89ab,0xcdef },"fmove.l #$89abcdef,fpiar" },
        !           783:        { { 0xf23c, 0x8800, 0x89ab,0xcdef },"fmove.l #$89abcdef,fpsr" },
        !           784:        { { 0xf23c, 0x8c00, 0x89ab,0xcdef, 0xabcd,0xef01 },
        !           785:                                "fmovem.l #$89abcdef/#$abcdef01,fpsr/fpiar" },
        !           786:        { { 0xf23c, 0x9000, 0x89ab,0xcdef },"fmove.l #$89abcdef,fpcr" },
        !           787:        { { 0xf23c, 0x9400, 0x89ab,0xcdef, 0xabcd,0xef01 },
        !           788:                                "fmovem.l #$89abcdef/#$abcdef01,fpcr/fpiar" },
        !           789:        { { 0xf23c, 0x9800, 0x89ab,0xcdef, 0xabcd,0xef01 },
        !           790:                                "fmovem.l #$89abcdef/#$abcdef01,fpcr/fpsr" },
        !           791:        { { 0xf23c, 0x9c00, 0x89ab,0xcdef, 0xabcd,0xef01, 0xcdef,0x1234 },
        !           792:                                "fmovem.l #$89abcdef/#$abcdef01/#$cdef1234,fpcr/fpsr/fpiar" },
        !           793:        { { 0xf210, 0xa400 },                           "fmove.l fpiar,(a0)" },
        !           794:        { { 0xf210, 0xa800 },                           "fmove.l fpsr,(a0)" },
        !           795:        { { 0xf210, 0xac00 },                           "fmovem.l fpsr/fpiar,(a0)" },
        !           796:        { { 0xf210, 0xb000 },                           "fmove.l fpcr,(a0)" },
        !           797:        { { 0xf210, 0xb400 },                           "fmovem.l fpcr/fpiar,(a0)" },
        !           798:        { { 0xf210, 0xb800 },                           "fmovem.l fpcr/fpsr,(a0)" },
        !           799:        { { 0xf210, 0xbc00 },                           "fmovem.l fpcr/fpsr/fpiar,(a0)" },
        !           800: 
        !           801:        { { 0xf210, 0xd080 },                           "fmovem.x (a0),fp0" },
        !           802:        { { 0xf210, 0xd810 },                           "fmovem.x (a0),d1" },
        !           803:        { { 0xf220, 0xe801 },                           "fmovem.x fp0,-(a0)" },
        !           804:        { { 0xf210, 0xf080 },                           "fmovem.x fp0,(a0)" },
        !           805:        { { 0xf210, 0xf810 },                           "fmovem.x d1,(a0)" },
        !           806:        // fmovem (制御・ポストインクリメント)
        !           807:        { { 0xf210, 0xf000 }, "fmovem.x nofpn,(a0)" },                  // リストなし
        !           808:        { { 0xf210, 0xf0c0 }, "fmovem.x fp0-fp1,(a0)" },                // 連続
        !           809:        { { 0xf210, 0xf0ec }, "fmovem.x fp0-fp2/fp4-fp5,(a0)" },// 区間が複数
        !           810:        { { 0xf210, 0xf00f }, "fmovem.x fp4-fp7,(a0)" },                // fp7で終わる
        !           811:        // fmovem (プリデクリメント)
        !           812:        { { 0xf220, 0xe800 }, "fmovem.x nofpn,-(a0)" },                 // リストなし
        !           813:        { { 0xf220, 0xe803 }, "fmovem.x fp0-fp1,-(a0)" },               // 連続
        !           814:        { { 0xf220, 0xe837 }, "fmovem.x fp0-fp2/fp4-fp5,-(a0)"},// 区間が複数
        !           815:        { { 0xf220, 0xe8f0 }, "fmovem.x fp4-fp7,-(a0)" },               // fp7で終わる
        !           816: 
        !           817:        { { 0xf240, 0x0001 },                           "fseq.b  d0" },
        !           818:        { { 0xf249, 0x0001, 0xfffe },           "fdbeq   d1,$00000100" },
        !           819:        { { 0xf27a, 0x0001, 0x89ab },           "ftrapeq.w #$89ab" },
        !           820:        { { 0xf27b, 0x0001, 0x89ab, 0xcdef},"ftrapeq.l #$89abcdef" },
        !           821:        { { 0xf27c, 0x0001 },                           "ftrapeq" },
        !           822:        { { 0xf281, 0xfffe },                           "fbeq.w  $00000100" },
        !           823:        { { 0xf2c1, 0xffff, 0xfffe },           "fbeq.l  $00000100" },
        !           824:        { { 0xf280, 0x0000 },                           "fnop" },
        !           825:        { { 0xf280, 0xfffe },                           "fbf.w   $00000100" },
        !           826:        { { 0xf310 },                                           "fsave   (a0)" },
        !           827:        { { 0xf350 },                                           "frestore (a0)" },
        !           828: };
        !           829: 
        !           830: uint8 mem[1024];
        !           831: int failed;
        !           832: 
        !           833: uint32
        !           834: m68030_phys_peek_8(uint32 addr)
        !           835: {
        !           836:        if (addr >= sizeof(mem)) {
        !           837:                abort();
        !           838:        }
        !           839:        return mem[addr ^ 1];
        !           840: }
        !           841: 
        !           842: // リンカを通すためのダミー
        !           843: uint64
        !           844: m68030_mmu_translate_peek(m68kcpu *cpu, uint32 addr, uint fc)
        !           845: {
        !           846:        return -1;
        !           847: }
        !           848: 
        !           849: int
        !           850: main(int ac, char *av[])
        !           851: {
        !           852:        std::string buf;
        !           853:        uint32 nextpc;
        !           854: 
        !           855:        for (int i = 0; i < countof(table); i++) {
        !           856:                std::string expected = table[i].expected;
        !           857:                std::vector<uint16> inst = table[i].inst;
        !           858: 
        !           859:                // エラー表示用
        !           860:                std::string inst_str;
        !           861:                for (const auto j : inst) {
        !           862:                        inst_str += string_format(" %04x", j);
        !           863:                }
        !           864: 
        !           865:                // 全体を初期化
        !           866:                memset(mem, 0xdd, sizeof(mem));
        !           867:                // 100番地から命令列を書き込む
        !           868:                for (int j = 0; j < inst.size(); j++) {
        !           869:                        *(uint16 *)(mem + 0x100 + j * 2) = inst[j];
        !           870:                }
        !           871:                // 検査
        !           872:                Disasm disasm;
        !           873:                buf = disasm.Disassemble(0x100);
        !           874:                nextpc = disasm.GetNextAddr();
        !           875:                // 照合
        !           876:                if (buf != expected) {
        !           877:                        printf(">%s expects \"%s\" but \"%s\"\n", inst_str.c_str(),
        !           878:                                expected.c_str(), buf.c_str());
        !           879:                        failed++;
        !           880:                        continue;
        !           881:                }
        !           882:                uint32 expected_pc = 0x100 + inst.size() * 2;
        !           883:                if (nextpc != expected_pc) {
        !           884:                        printf(">%s expects nextpc=$%x but $%x\n", inst_str.c_str(),
        !           885:                                expected_pc, nextpc);
        !           886:                        failed++;
        !           887:                        continue;
        !           888:                }
        !           889:        }
        !           890: 
        !           891:        int total = countof(table);
        !           892:        printf("%d tests, %d success", total, total - failed);
        !           893:        if (failed > 0) {
        !           894:                printf(", %d failed", failed);
        !           895:        }
        !           896:        printf("\n");
        !           897:        return 0;
        !           898: }

unix.superglobalmegacorp.com

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