Annotation of nono/m88xx0/testdis.cpp, revision 1.1.1.8

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2020 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: #include "m88100disasm.h"
1.1.1.5   root        8: #include "debugger_memory.h"
1.1.1.3   root        9: #include "mpu.h"
1.1       root       10: #include "mystring.h"
                     11: 
1.1.1.2   root       12: #define O(inst, expstd)                        { __LINE__, inst, expstd }
                     13: #define T(inst, expstd, expalt) { __LINE__, inst, expstd, expalt }
                     14: #define M(b, d, s1, s2)                ((b) | ((d)<<21) | ((s1)<<16) | (s2))
                     15: 
1.1       root       16: struct {
1.1.1.2   root       17:        int line;
1.1       root       18:        uint32 inst;
1.1.1.2   root       19:        std::string expstd;
                     20:        std::string expalt;
1.1       root       21: } table[] = {
1.1.1.2   root       22:  T(0x02328765, "xmem.bu r17,r18,#0x8765",      "{xmem.bu r17,(r18,#0x8765)}"),
                     23:  T(0x06328765, "xmem    r17,r18,#0x8765",      "{xmem   r17,(r18,#0x8765)}"),
                     24:  T(0x06320000, "xmem    r17,r18,#0x0000",      "{xmem   r17,(r18)}"),
                     25:  T(0x06200001, "xmem    r17,r0, #0x0001",      "{xmem   r17,(r0,#0x0001)}"),
                     26:  T(0x0a328765, "ld.hu   r17,r18,#0x8765",      "{ld.hu  r17,(r18,#0x8765)}"),
                     27:  T(0x0e328765, "ld.bu   r17,r18,#0x8765",      "{ld.bu  r17,(r18,#0x8765)}"),
                     28:  T(0x12328765, "ld.d    r17,r18,#0x8765",      "{ld.d   r17,(r18,#0x8765)}"),
                     29:  T(0x16328765, "ld      r17,r18,#0x8765",      "{ld     r17,(r18,#0x8765)}"),
                     30:  T(0x1a328765, "ld.h    r17,r18,#0x8765",      "{ld.h   r17,(r18,#0x8765)}"),
                     31:  T(0x1e328765, "ld.b    r17,r18,#0x8765",      "{ld.b   r17,(r18,#0x8765)}"),
                     32:  T(0x22328765, "st.d    r17,r18,#0x8765",      "{st.d   r17,(r18,#0x8765)}"),
                     33:  T(0x26328765, "st      r17,r18,#0x8765",      "{st     r17,(r18,#0x8765)}"),
                     34:  T(0x2a328765, "st.h    r17,r18,#0x8765",      "{st.h   r17,(r18,#0x8765)}"),
                     35:  T(0x2e328765, "st.b    r17,r18,#0x8765",      "{st.b   r17,(r18,#0x8765)}"),
                     36:  T(0x32328765, "lda.d   r17,r18,#0x8765",      "{lda.d  r17,r18,#0x8765}"),
                     37:  T(0x36328765, "lda     r17,r18,#0x8765",      "{lda    r17,r18,#0x8765}"),
                     38:  T(0x3a328765, "lda.h   r17,r18,#0x8765",      "{lda.h  r17,r18,#0x8765}"),
                     39:  T(0x3e328765, "lda.b   r17,r18,#0x8765",      "{lda.b  r17,r18,#0x8765}"),
                     40:  T(0x36320000, "lda     r17,r18,#0x0000",      "{lda    r17,r18}"),
                     41:  T(0x36200001, "lda     r17,r0, #0x0001",      "{lda    r17,r0,#0x0001}"),
                     42: 
                     43:  T(0x40128765, "and     r0, r18,#0x8765",      "{nop}"),
                     44:  T(0x42208765, "and     r17,r0, #0x8765",      "{clr    r17}"),
                     45:  T(0x42318765, "and     r17,r17,#0x8765",      "{and    r17,#0xffff8765}"),
                     46:  T(0x42328765, "and     r17,r18,#0x8765",      "{and    r17,r18,#0xffff8765}"),
                     47:  T(0x44128765, "and.u   r0, r18,#0x8765",      "{nop}"),
                     48:  T(0x46208765, "and.u   r17,r0, #0x8765",      "{clr    r17}"),
                     49:  T(0x46318765, "and.u   r17,r17,#0x8765",      "{and    r17,#0x8765ffff}"),
                     50:  T(0x46328765, "and.u   r17,r18,#0x8765",      "{and    r17,r18,#0x8765ffff}"),
                     51:  T(0x48128765, "mask    r0, r18,#0x8765",      "{nop}"),
                     52:  T(0x4a208765, "mask    r17,r0, #0x8765",      "{clr    r17}"),
                     53:  T(0x4a318765, "mask    r17,r17,#0x8765",      "{and    r17,#0x00008765}"),
                     54:  T(0x4a328765, "mask    r17,r18,#0x8765",      "{and    r17,r18,#0x00008765}"),
                     55:  T(0x4c128765, "mask.u  r0, r18,#0x8765",      "{nop}"),
                     56:  T(0x4e208765, "mask.u  r17,r0, #0x8765",      "{clr    r17}"),
                     57:  T(0x4e318765, "mask.u  r17,r17,#0x8765",      "{and    r17,#0x87650000}"),
                     58:  T(0x4e328765, "mask.u  r17,r18,#0x8765",      "{and    r17,r18,#0x87650000}"),
                     59: 
                     60:  T(0x50128765, "xor     r0, r18,#0x8765",      "{nop}"),
                     61:  T(0x52208765, "xor     r17,r0, #0x8765",      "{mov    r17,#0x8765}"),
                     62:  T(0x52318765, "xor     r17,r17,#0x8765",      "{xor    r17,#0x8765}"),
                     63:  T(0x52328765, "xor     r17,r18,#0x8765",      "{xor    r17,r18,#0x8765}"),
                     64:  T(0x54128765, "xor.u   r0, r18,#0x8765",      "{nop}"),
                     65:  T(0x56208765, "xor.u   r17,r0, #0x8765",      "{mov    r17,#0x87650000}"),
                     66:  T(0x56318765, "xor.u   r17,r17,#0x8765",      "{xor    r17,#0x87650000}"),
                     67:  T(0x56328765, "xor.u   r17,r18,#0x8765",      "{xor    r17,r18,#0x87650000}"),
                     68:  T(0x58128765, "or      r0, r18,#0x8765",      "{nop}"),
                     69:  T(0x5a208765, "or      r17,r0, #0x8765",      "{mov    r17,#0x8765}"),
                     70:  T(0x5a318765, "or      r17,r17,#0x8765",      "{or     r17,#0x8765}"),
                     71:  T(0x5a328765, "or      r17,r18,#0x8765",      "{or     r17,r18,#0x8765}"),
                     72:  T(0x5c128765, "or.u    r0, r18,#0x8765",      "{nop}"),
                     73:  T(0x5e208765, "or.u    r17,r0, #0x8765",      "{mov    r17,#0x87650000}"),
                     74:  T(0x5e318765, "or.u    r17,r17,#0x8765",      "{or     r17,#0x87650000}"),
                     75:  T(0x5e328765, "or.u    r17,r18,#0x8765",      "{or     r17,r18,#0x87650000}"),
                     76: 
                     77:  T(0x60128765, "addu    r0, r18,#0x8765",      "{nop}"),
                     78:  T(0x62208765, "addu    r17,r0, #0x8765",      "{mov    r17,#0x00008765}"),
                     79:  T(0x62318765, "addu    r17,r17,#0x8765",      "{addu   r17,#0x00008765}"),
                     80:  T(0x62328765, "addu    r17,r18,#0x8765",      "{addu   r17,r18,#0x00008765}"),
                     81:  T(0x64128765, "subu    r0, r18,#0x8765",      "{nop}"),
                     82:  T(0x66208765, "subu    r17,r0, #0x8765",      "{mov    r17,#0xffff789b}"),
                     83:  T(0x66318765, "subu    r17,r17,#0x8765",      "{subu   r17,#0x00008765}"),
                     84:  T(0x66328765, "subu    r17,r18,#0x8765",      "{subu   r17,r18,#0x00008765}"),
                     85:  T(0x68128765, "divu    r0, r18,#0x8765",      "{divu   r0, r18,#0x00008765}"),
                     86:  T(0x6a208765, "divu    r17,r0, #0x8765",      "{divu   r17,r0, #0x00008765}"),
                     87:  T(0x6a318765, "divu    r17,r17,#0x8765",      "{divu   r17,#0x00008765}"),
                     88:  T(0x6a328765, "divu    r17,r18,#0x8765",      "{divu   r17,r18,#0x00008765}"),
                     89:  T(0x6c128765, "mul     r0, r18,#0x8765",      "{mul    r0, r18,#0x00008765}"),
                     90:  T(0x6e208765, "mul     r17,r0, #0x8765",      "{mul    r17,r0, #0x00008765}"),
                     91:  T(0x6e318765, "mul     r17,r17,#0x8765",      "{mul    r17,#0x00008765}"),
                     92:  T(0x6e328765, "mul     r17,r18,#0x8765",      "{mul    r17,r18,#0x00008765}"),
                     93: 
                     94:  T(0x70128765, "add     r0, r18,#0x8765",      "{adds   r0, r18,#0x00008765}"),
                     95:  T(0x72208765, "add     r17,r0, #0x8765",      "{adds   r17,r0, #0x00008765}"),
                     96:  T(0x72318765, "add     r17,r17,#0x8765",      "{adds   r17,#0x00008765}"),
                     97:  T(0x72328765, "add     r17,r18,#0x8765",      "{adds   r17,r18,#0x00008765}"),
                     98:  T(0x74128765, "sub     r0, r18,#0x8765",      "{subs   r0, r18,#0x00008765}"),
                     99:  T(0x76208765, "sub     r17,r0, #0x8765",      "{subs   r17,r0, #0x00008765}"),
                    100:  T(0x76318765, "sub     r17,r17,#0x8765",      "{subs   r17,#0x00008765}"),
                    101:  T(0x76328765, "sub     r17,r18,#0x8765",      "{subs   r17,r18,#0x00008765}"),
                    102:  T(0x78128765, "div     r0, r18,#0x8765",      "{div    r0, r18,#0x00008765}"),
                    103:  T(0x7a208765, "div     r17,r0, #0x8765",      "{div    r17,r0, #0x00008765}"),
                    104:  T(0x7a318765, "div     r17,r17,#0x8765",      "{div    r17,#0x00008765}"),
                    105:  T(0x7a328765, "div     r17,r18,#0x8765",      "{div    r17,r18,#0x00008765}"),
                    106:  T(0x7c128765, "cmp     r0, r18,#0x8765",      "{nop}"),
                    107:  T(0x7e208765, "cmp     r17,r0, #0x8765",      "{cmp    r17,r0, #0x00008765}"),
                    108:  T(0x7e318765, "cmp     r17,r17,#0x8765",      "{cmp    r17,r17,#0x00008765}"),
                    109:  T(0x7e328765, "cmp     r17,r18,#0x8765",      "{cmp    r17,r18,#0x00008765}"),
                    110: 
                    111:  O(0x82204260, "ldcr    r17,sr2"),
                    112:  O(0x82204fe0, "fldcr   r17,fpcr"),
                    113:  O(0x80118271, "stcr    r17,sr2"),
                    114:  O(0x80118ff1, "fstcr   r17,fpcr"),
                    115:  O(0x8232c272, "xcr     r17,r18,sr2"),
                    116:  O(0x8232cff2, "fxcr    r17,r18,fpcr"),
                    117: 
                    118:  O(0x86320001, "fmul.sss r17,r18,r1"),
                    119:  O(0x86202001, "flt.ss  r17,r1"),
                    120:  O(0x86322801, "fadd.sss r17,r18,r1"),
                    121:  O(0x86323001, "fsub.sss r17,r18,r1"),
                    122:  O(0x86323801, "fcmp.sss r17,r18,r1"),
                    123:  O(0x86204801, "int.ss  r17,r1"),
                    124:  O(0x86205001, "nint.ss r17,r1"),
                    125:  O(0x86205801, "trnc.ss r17,r1"),
                    126:  O(0x86327001, "fdiv.sss r17,r18,r1"),
1.1       root      127:  // fmul のサイズ
1.1.1.2   root      128:  O(0x86320021, "fmul.dss r17,r18,r1"),
                    129:  O(0x86320081, "fmul.ssd r17,r18,r1"),
                    130:  O(0x863200a1, "fmul.dsd r17,r18,r1"),
                    131:  O(0x86320201, "fmul.sds r17,r18,r1"),
                    132:  O(0x86320221, "fmul.dds r17,r18,r1"),
                    133:  O(0x86320281, "fmul.sdd r17,r18,r1"),
                    134:  O(0x863202a1, "fmul.ddd r17,r18,r1"),
                    135: 
                    136:  O(0xc3ffffff, "br      0x000000fc"),
                    137:  O(0xc7ffffff, "br.n    0x000000fc"),
                    138:  O(0xcbffffff, "bsr     0x000000fc"),
                    139:  O(0xcfffffff, "bsr.n   0x000000fc"),
                    140:  O(0xd232ffff, "bb0     #17,r18,0x000000fc"),
                    141:  O(0xd632ffff, "bb0.n   #17,r18,0x000000fc"),
                    142:  O(0xda32ffff, "bb1     #17,r18,0x000000fc"),
                    143:  O(0xde32ffff, "bb1.n   #17,r18,0x000000fc"),
1.1.1.5   root      144: 
                    145: #define L "0x000000fc"
                    146:  T(0xe852ffff, "bcnd    eq0,r18," L, "{br     (r18==0|(float)r18==+0)," L "}"),
                    147:  T(0xec52ffff, "bcnd.n  eq0,r18," L, "{br.n   (r18==0|(float)r18==+0)," L "}"),
                    148: #define A(m5, s1)      M(0xe8000000, m5, s1, 0xffff)
                    149:  T(A(0x00, 2), "bcnd    #0, r2, " L, "{br     false," L "}"),
                    150:  T(A(0x01, 2), "bcnd    gt0,r2, " L, "{br     (r2>0|(float)r2>+0)," L "}"),
                    151:  T(A(0x02, 2), "bcnd    eq0,r2, " L, "{br     (r2==0|(float)r2==+0)," L "}"),
                    152:  T(A(0x03, 2), "bcnd    ge0,r2, " L, "{br     (r2>=0|(float)r2>=+0)," L "}"),
                    153:  T(A(0x04, 2), "bcnd    #4, r2, " L, "{br     ((float)r2<-0)," L "}"),
                    154:  T(A(0x05, 2), "bcnd    #5, r2, " L, "{br     ((float)r2!=0)," L "}"),
                    155:  O(A(0x06, 2), "bcnd    #6, r2, " L),
                    156:  T(A(0x07, 2), "bcnd    #7, r2, " L, "{br     (r2!=0x80000000)," L "}"),
                    157:  T(A(0x08, 2), "bcnd    #8, r2, " L, "{br     (r2==0x80000000)," L "}"),
                    158:  O(A(0x09, 2), "bcnd    #9, r2, " L),
                    159:  T(A(0x0a, 2), "bcnd    #10,r2, " L, "{br     ((float)r2==0)," L "}"),
                    160:  T(A(0x0b, 2), "bcnd    #11,r2, " L, "{br     ((float)r2>=-0)," L "}"),
                    161:  T(A(0x0c, 2), "bcnd    lt0,r2, " L, "{br     (r2<0|(float)r2<+0)," L "}"),
                    162:  T(A(0x0d, 2), "bcnd    ne0,r2, " L, "{br     (r2!=0|(float)r2!=+0)," L "}"),
                    163:  T(A(0x0e, 2), "bcnd    le0,r2, " L, "{br     (r2<=0|(float)r2<=+0)," L "}"),
                    164:  T(A(0x0f, 2), "bcnd    #15,r2, " L, "{br     " L "}"),
                    165:  O(A(0x10, 2), "bcnd    #16,r2, " L),
                    166:  O(A(0x1f, 2), "bcnd    #31,r2, " L),
                    167:  T(A(0x00, 0), "bcnd    #0, r0, " L, "{br     false," L "}"),
                    168:  T(A(0x01, 0), "bcnd    gt0,r0, " L, "{br     false," L "}"),
                    169:  T(A(0x02, 0), "bcnd    eq0,r0, " L, "{br     " L "}"),
                    170:  T(A(0x03, 0), "bcnd    ge0,r0, " L, "{br     " L "}"),
                    171:  T(A(0x04, 0), "bcnd    #4, r0, " L, "{br     false," L "}"),
                    172:  T(A(0x05, 0), "bcnd    #5, r0, " L, "{br     false," L "}"),
                    173:  T(A(0x06, 0), "bcnd    #6, r0, " L, "{br     " L "}"),
                    174:  T(A(0x07, 0), "bcnd    #7, r0, " L, "{br     " L "}"),
                    175:  T(A(0x08, 0), "bcnd    #8, r0, " L, "{br     false," L "}"),
                    176:  T(A(0x09, 0), "bcnd    #9, r0, " L, "{br     false," L "}"),
                    177:  T(A(0x0a, 0), "bcnd    #10,r0, " L, "{br     " L "}"),
                    178:  T(A(0x0b, 0), "bcnd    #11,r0, " L, "{br     " L "}"),
                    179:  T(A(0x0c, 0), "bcnd    lt0,r0, " L, "{br     false," L "}"),
                    180:  T(A(0x0d, 0), "bcnd    ne0,r0, " L, "{br     false," L "}"),
                    181:  T(A(0x0e, 0), "bcnd    le0,r0, " L, "{br     " L "}"),
                    182:  T(A(0x0f, 0), "bcnd    #15,r0, " L, "{br     " L "}"),
                    183:  O(A(0x10, 0), "bcnd    #16,r0, " L),
                    184:  O(A(0x1f, 0), "bcnd    #31,r0, " L),
                    185: #undef A
                    186: #undef L
                    187: 
                    188:  T(0xf2328034, "clr     r17,r18,1<20>",                "{and    r17,r18,0xffefffff}"),
                    189:  T(0xf2328274, "clr     r17,r18,19<20>",       "{and    r17,r18,0x000fffff}"),
                    190:  T(0xf2328834, "set     r17,r18,1<20>",                "{or     r17,r18,0x00100000}"),
                    191:  T(0xf2328a74, "set     r17,r18,19<20>",       "{or     r17,r18,0xfff00000}"),
1.1.1.2   root      192: 
                    193:  T(0xf0129274, "ext     r0, r18,19<20>",       "{nop}"),
                    194:  T(0xf2209274, "ext     r17,r0, 19<20>",       "{clr    r17}"),
                    195:  T(0xf2319014, "ext     r17,r17,32<20>",       "{asr    r17,#20}"),
                    196:  T(0xf2329014, "ext     r17,r18,32<20>",       "{asr    r17,r18,#20}"),
                    197:  T(0xf2319194, "ext     r17,r17,12<20>",       "{asr    r17,#20}"),
                    198:  T(0xf2319174, "ext     r17,r17,11<20>",       "{bfexts r17,11<20>}"),
                    199:  T(0xf2329194, "ext     r17,r18,12<20>",       "{asr    r17,r18,#20}"),
                    200:  T(0xf2329174, "ext     r17,r18,11<20>",       "{bfexts r17,r18,11<20>}"),
                    201:  T(0xf0129a74, "extu    r0, r18,19<20>",       "{nop}"),
                    202:  T(0xf2209a74, "extu    r17,r0, 19<20>",       "{clr    r17}"),
                    203:  T(0xf2319814, "extu    r17,r17,32<20>",       "{lsr    r17,#20}"),
                    204:  T(0xf2329814, "extu    r17,r18,32<20>",       "{lsr    r17,r18,#20}"),
                    205:  T(0xf2319994, "extu    r17,r17,12<20>",       "{lsr    r17,#20}"),
                    206:  T(0xf2319974, "extu    r17,r17,11<20>",       "{bfextu r17,11<20>}"),
                    207:  T(0xf2329994, "extu    r17,r18,12<20>",       "{lsr    r17,r18,#20}"),
                    208:  T(0xf2329974, "extu    r17,r18,11<20>",       "{bfextu r17,r18,11<20>}"),
                    209: 
                    210:  T(0xf012a274, "mak     r0, r18,19<20>",       "{nop}"),
                    211:  T(0xf220a274, "mak     r17,r0, 19<20>",       "{clr    r17}"),
                    212:  T(0xf231a014, "mak     r17,r17,32<20>",       "{lsl    r17,#20}"),
                    213:  T(0xf232a014, "mak     r17,r18,32<20>",       "{lsl    r17,r18,#20}"),
                    214:  T(0xf231a194, "mak     r17,r17,12<20>",       "{lsl    r17,#20}"),
                    215:  T(0xf231a174, "mak     r17,r17,11<20>",       "{bfmak  r17,11<20>}"),
                    216:  T(0xf232a194, "mak     r17,r18,12<20>",       "{lsl    r17,r18,#20}"),
                    217:  T(0xf232a174, "mak     r17,r18,11<20>",       "{bfmak  r17,r18,11<20>}"),
                    218:  T(0xf012a814, "rot     r0, r18,<20>",         "{nop}"),
                    219:  T(0xf231a800, "rot     r17,r17,<0>",          "{nop}"),
                    220:  T(0xf220a814, "rot     r17,r0, <20>",         "{clr    r17}"),
                    221:  T(0xf231a810, "rot     r17,r17,<16>",         "{ror    r17,#16}"),
                    222:  T(0xf232a810, "rot     r17,r18,<16>",         "{ror    r17,r18,#16}"),
                    223:  T(0xf231a814, "rot     r17,r17,<20>",         "{rol    r17,#12}"),
                    224:  T(0xf232a814, "rot     r17,r18,<20>",         "{rol    r17,r18,#12}"),
                    225: 
                    226:  O(0xf232d101, "tb0     #17,r18,#0x101"),
                    227:  O(0xf232d901, "tb1     #17,r18,#0x101"),
                    228:  T(0xf220d87f, "tb1     #17,r0, #0x07f",       "{ssync}"),
                    229:  T(0xf220d880, "tb1     #17,r0, #0x080",       "{usync}"),
                    230:  O(0xf052e901, "tcnd    eq0,r18,#0x101"),
                    231: 
                    232:  T(0xf6320001, "xmem.bu r17,r18,r1",           "{xmem.bu r17,(r18,r1)}"),
                    233:  T(0xf6320401, "xmem    r17,r18,r1",           "{xmem   r17,(r18,r1)}"),
                    234:  T(0xf6320801, "ld.hu   r17,r18,r1",           "{ld.hu  r17,(r18,r1)}"),
                    235:  T(0xf6320c01, "ld.bu   r17,r18,r1",           "{ld.bu  r17,(r18,r1)}"),
                    236:  T(0xf6321001, "ld.d    r17,r18,r1",           "{ld.d   r17,(r18,r1)}"),
                    237:  T(0xf6321401, "ld      r17,r18,r1",           "{ld     r17,(r18,r1)}"),
                    238:  T(0xf6321801, "ld.h    r17,r18,r1",           "{ld.h   r17,(r18,r1)}"),
                    239:  T(0xf6321c01, "ld.b    r17,r18,r1",           "{ld.b   r17,(r18,r1)}"),
                    240:  T(0xf6322001, "st.d    r17,r18,r1",           "{st.d   r17,(r18,r1)}"),
                    241:  T(0xf6322401, "st      r17,r18,r1",           "{st     r17,(r18,r1)}"),
                    242:  T(0xf6322801, "st.h    r17,r18,r1",           "{st.h   r17,(r18,r1)}"),
                    243:  T(0xf6322c01, "st.b    r17,r18,r1",           "{st.b   r17,(r18,r1)}"),
1.1       root      244:  // 全種について全引数パターンはつらいので ld だけで引数を変える
1.1.1.2   root      245:  T(0xf6321000, "ld.d    r17,r18,r0",           "{ld.d   r17,(r18)}"),
                    246:  T(0xf6321200, "ld.d    r17,r18[r0]",          "{ld.d   r17,(r18)}"),
                    247:  T(0xf6201001, "ld.d    r17,r0, r1",           "{ld.d   r17,(r1)}"),
                    248:  T(0xf6321001, "ld.d    r17,r18,r1",           "{ld.d   r17,(r18,r1)}"),
                    249:  T(0xf6201201, "ld.d    r17,r0[r1]",           "{ld.d   r17,(r0[r1])}"),
                    250:  T(0xf6321201, "ld.d    r17,r18[r1]",          "{ld.d   r17,(r18[r1])}"),
1.1       root      251:  // .usr も一部代表だけ
1.1.1.2   root      252:  T(0xf6321101, "ld.d.usr r17,r18,r1",          "{ldusr.d r17,(r18,r1)}"),
                    253:  T(0xf6321401, "ld      r17,r18,r1",           "{ld     r17,(r18,r1)}"),
                    254:  T(0xf6321501, "ld.usr  r17,r18,r1",           "{ldusr  r17,(r18,r1)}"),
1.1       root      255:  // lda
1.1.1.2   root      256:  T(0xf6323001, "lda.d   r17,r18,r1",           "{lda.d  r17,r18,r1}"),
                    257:  T(0xf6323401, "lda     r17,r18,r1",           "{lda    r17,r18,r1}"),
                    258:  T(0xf6323801, "lda.h   r17,r18,r1",           "{lda.h  r17,r18,r1}"),
                    259:  T(0xf6323c01, "lda.b   r17,r18,r1",           "{lda.b  r17,r18,r1}"),
                    260: 
                    261:  // ここから3項になってパターンが増えるので r17, r18 ではなく r1, r2 を使う
                    262: #define A(d, s1, s2)   M(0xf400'4000, d, s1, s2)
                    263:  T(A(0, 0, 0), "and     r0, r0, r0",           "{nop}"),
                    264:  T(A(0, 0, 1), "and     r0, r0, r1",           "{nop}"),
                    265:  T(A(0, 1, 0), "and     r0, r1, r0",           "{nop}"),
                    266:  T(A(0, 1, 1), "and     r0, r1, r1",           "{nop}"),
                    267:  T(A(0, 1, 2), "and     r0, r1, r2",           "{nop}"),
                    268:  T(A(0, 2, 1), "and     r0, r2, r1",           "{nop}"),
                    269:  T(A(1, 0, 0), "and     r1, r0, r0",           "{clr    r1}"),
                    270:  T(A(1, 0, 1), "and     r1, r0, r1",           "{clr    r1}"),
                    271:  T(A(1, 0, 2), "and     r1, r0, r2",           "{clr    r1}"),
                    272:  T(A(1, 1, 0), "and     r1, r1, r0",           "{clr    r1}"),
                    273:  T(A(1, 1, 1), "and     r1, r1, r1",           "{nop}"),
                    274:  T(A(1, 1, 2), "and     r1, r1, r2",           "{and    r1, r2}"),
                    275:  T(A(1, 2, 0), "and     r1, r2, r0",           "{clr    r1}"),
                    276:  T(A(1, 2, 1), "and     r1, r2, r1",           "{and    r1, r2}"),
                    277:  T(A(1, 2, 2), "and     r1, r2, r2",           "{mov    r1, r2}"),
                    278:  T(A(1, 2, 3), "and     r1, r2, r3",           "{and    r1, r2, r3}"),
                    279: #undef A
                    280: 
                    281: #define A(d, s1, s2)   M(0xf400'4400, d, s1, s2)
                    282:  T(A(0, 0, 0), "and.c   r0, r0, r0",           "{nop}"),
                    283:  T(A(0, 0, 1), "and.c   r0, r0, r1",           "{nop}"),
                    284:  T(A(0, 1, 0), "and.c   r0, r1, r0",           "{nop}"),
                    285:  T(A(0, 1, 1), "and.c   r0, r1, r1",           "{nop}"),
                    286:  T(A(0, 1, 2), "and.c   r0, r1, r2",           "{nop}"),
                    287:  T(A(0, 2, 1), "and.c   r0, r2, r1",           "{nop}"),
                    288:  T(A(1, 0, 0), "and.c   r1, r0, r0",           "{clr    r1}"),
                    289:  T(A(1, 0, 1), "and.c   r1, r0, r1",           "{clr    r1}"),
                    290:  T(A(1, 0, 2), "and.c   r1, r0, r2",           "{clr    r1}"),
                    291:  T(A(1, 1, 0), "and.c   r1, r1, r0",           "{nop}"),
                    292:  T(A(1, 1, 1), "and.c   r1, r1, r1",           "{clr    r1}"),
                    293:  T(A(1, 1, 2), "and.c   r1, r1, r2",           "{and    r1, ~r2}"),
                    294:  T(A(1, 2, 0), "and.c   r1, r2, r0",           "{mov    r1, r2}"),
                    295:  T(A(1, 2, 1), "and.c   r1, r2, r1",           "{and    r1, r2, ~r1}"),
                    296:  T(A(1, 2, 2), "and.c   r1, r2, r2",           "{clr    r1}"),
                    297:  T(A(1, 2, 3), "and.c   r1, r2, r3",           "{and    r1, r2, ~r3}"),
                    298: #undef A
                    299: 
                    300: #define A(d, s1, s2)   M(0xf400'5000, d, s1, s2)
                    301:  T(A(0, 0, 0), "xor     r0, r0, r0",           "{nop}"),
                    302:  T(A(0, 0, 1), "xor     r0, r0, r1",           "{nop}"),
                    303:  T(A(0, 1, 0), "xor     r0, r1, r0",           "{nop}"),
                    304:  T(A(0, 1, 1), "xor     r0, r1, r1",           "{nop}"),
                    305:  T(A(0, 1, 2), "xor     r0, r1, r2",           "{nop}"),
                    306:  T(A(0, 2, 1), "xor     r0, r2, r1",           "{nop}"),
                    307:  T(A(1, 0, 0), "xor     r1, r0, r0",           "{clr    r1}"),
                    308:  T(A(1, 0, 1), "xor     r1, r0, r1",           "{nop}"),
                    309:  T(A(1, 0, 2), "xor     r1, r0, r2",           "{mov    r1, r2}"),
                    310:  T(A(1, 1, 0), "xor     r1, r1, r0",           "{nop}"),
                    311:  T(A(1, 1, 1), "xor     r1, r1, r1",           "{clr    r1}"),
                    312:  T(A(1, 1, 2), "xor     r1, r1, r2",           "{xor    r1, r2}"),
                    313:  T(A(1, 2, 0), "xor     r1, r2, r0",           "{mov    r1, r2}"),
                    314:  T(A(1, 2, 1), "xor     r1, r2, r1",           "{xor    r1, r2}"),
                    315:  T(A(1, 2, 2), "xor     r1, r2, r2",           "{clr    r1}"),
                    316:  T(A(1, 2, 3), "xor     r1, r2, r3",           "{xor    r1, r2, r3}"),
                    317: #undef A
                    318: 
                    319:  // 独自ニーモニック側の XOR rD,rS1,~rS2 はもうちょっと演算したい
                    320: #define A(d, s1, s2)   M(0xf400'5400, d, s1, s2)
                    321:  T(A(0, 0, 0), "xor.c   r0, r0, r0",           "{nop}"),
                    322:  T(A(0, 0, 1), "xor.c   r0, r0, r1",           "{nop}"),
                    323:  T(A(0, 1, 0), "xor.c   r0, r1, r0",           "{nop}"),
                    324:  T(A(0, 1, 1), "xor.c   r0, r1, r1",           "{nop}"),
                    325:  T(A(0, 1, 2), "xor.c   r0, r1, r2",           "{nop}"),
                    326:  T(A(0, 2, 1), "xor.c   r0, r2, r1",           "{nop}"),
                    327:  T(A(1, 0, 0), "xor.c   r1, r0, r0",           "{mov    r1, #0xffffffff}"),
                    328:  T(A(1, 0, 1), "xor.c   r1, r0, r1",           "{not    r1}"),
                    329:  T(A(1, 0, 2), "xor.c   r1, r0, r2",           "{not    r1, r2}"),
                    330:  T(A(1, 1, 0), "xor.c   r1, r1, r0",           "{not    r1}"),
                    331:  T(A(1, 1, 1), "xor.c   r1, r1, r1",           "{mov    r1, #0xffffffff}"),
                    332:  T(A(1, 1, 2), "xor.c   r1, r1, r2",           "{xor    r1, ~r2}"),
                    333:  T(A(1, 2, 0), "xor.c   r1, r2, r0",           "{not    r1, r2}"),
                    334:  T(A(1, 2, 1), "xor.c   r1, r2, r1",           "{xor    r1, r2, ~r1}"),
                    335:  T(A(1, 2, 2), "xor.c   r1, r2, r2",           "{mov    r1, #0xffffffff}"),
                    336:  T(A(1, 2, 3), "xor.c   r1, r2, r3",           "{xor    r1, r2, ~r3}"),
                    337: #undef A
                    338: 
                    339: #define A(d, s1, s2)   M(0xf400'5800, d, s1, s2)
                    340:  T(A(0, 0, 0), "or      r0, r0, r0",           "{nop}"),
                    341:  T(A(0, 0, 1), "or      r0, r0, r1",           "{nop}"),
                    342:  T(A(0, 1, 0), "or      r0, r1, r0",           "{nop}"),
                    343:  T(A(0, 1, 1), "or      r0, r1, r1",           "{nop}"),
                    344:  T(A(0, 1, 2), "or      r0, r1, r2",           "{nop}"),
                    345:  T(A(0, 2, 1), "or      r0, r2, r1",           "{nop}"),
                    346:  T(A(1, 0, 0), "or      r1, r0, r0",           "{clr    r1}"),
                    347:  T(A(1, 0, 1), "or      r1, r0, r1",           "{nop}"),
                    348:  T(A(1, 0, 2), "or      r1, r0, r2",           "{mov    r1, r2}"),
                    349:  T(A(1, 1, 0), "or      r1, r1, r0",           "{nop}"),
                    350:  T(A(1, 1, 1), "or      r1, r1, r1",           "{nop}"),
                    351:  T(A(1, 1, 2), "or      r1, r1, r2",           "{or     r1, r2}"),
                    352:  T(A(1, 2, 0), "or      r1, r2, r0",           "{mov    r1, r2}"),
                    353:  T(A(1, 2, 1), "or      r1, r2, r1",           "{or     r1, r2}"),
                    354:  T(A(1, 2, 2), "or      r1, r2, r2",           "{mov    r1, r2}"),
                    355:  T(A(1, 2, 3), "or      r1, r2, r3",           "{or     r1, r2, r3}"),
                    356: #undef A
                    357: 
                    358: #define A(d, s1, s2)   M(0xf400'5c00, d, s1, s2)
                    359:  T(A(0, 0, 0), "or.c    r0, r0, r0",           "{nop}"),
                    360:  T(A(0, 0, 1), "or.c    r0, r0, r1",           "{nop}"),
                    361:  T(A(0, 1, 0), "or.c    r0, r1, r0",           "{nop}"),
                    362:  T(A(0, 1, 1), "or.c    r0, r1, r1",           "{nop}"),
                    363:  T(A(0, 1, 2), "or.c    r0, r1, r2",           "{nop}"),
                    364:  T(A(0, 2, 1), "or.c    r0, r2, r1",           "{nop}"),
                    365:  T(A(1, 0, 0), "or.c    r1, r0, r0",           "{mov    r1, #0xffffffff}"),
                    366:  T(A(1, 0, 1), "or.c    r1, r0, r1",           "{not    r1}"),
                    367:  T(A(1, 0, 2), "or.c    r1, r0, r2",           "{not    r1, r2}"),
                    368:  T(A(1, 1, 0), "or.c    r1, r1, r0",           "{mov    r1, #0xffffffff}"),
                    369:  T(A(1, 1, 1), "or.c    r1, r1, r1",           "{mov    r1, #0xffffffff}"),
                    370:  T(A(1, 1, 2), "or.c    r1, r1, r2",           "{or     r1, ~r2}"),
                    371:  T(A(1, 2, 0), "or.c    r1, r2, r0",           "{mov    r1, #0xffffffff}"),
                    372:  T(A(1, 2, 1), "or.c    r1, r2, r1",           "{or     r1, r2, ~r1}"),
                    373:  T(A(1, 2, 2), "or.c    r1, r2, r2",           "{mov    r1, #0xffffffff}"),
                    374:  T(A(1, 2, 3), "or.c    r1, r2, r3",           "{or     r1, r2, ~r3}"),
                    375: #undef A
                    376: 
                    377: #define A(d, s1, s2)   M(0xf400'6000, d, s1, s2)
                    378:  T(A(0, 0, 0), "addu    r0, r0, r0",           "{nop}"),
                    379:  T(A(0, 0, 1), "addu    r0, r0, r1",           "{nop}"),
                    380:  T(A(0, 1, 0), "addu    r0, r1, r0",           "{nop}"),
                    381:  T(A(0, 1, 1), "addu    r0, r1, r1",           "{nop}"),
                    382:  T(A(0, 1, 2), "addu    r0, r1, r2",           "{nop}"),
                    383:  T(A(0, 2, 1), "addu    r0, r2, r1",           "{nop}"),
                    384:  T(A(1, 0, 0), "addu    r1, r0, r0",           "{clr    r1}"),
                    385:  T(A(1, 0, 1), "addu    r1, r0, r1",           "{nop}"),
                    386:  T(A(1, 0, 2), "addu    r1, r0, r2",           "{mov    r1, r2}"),
                    387:  T(A(1, 1, 0), "addu    r1, r1, r0",           "{nop}"),
                    388:  T(A(1, 1, 1), "addu    r1, r1, r1",           "{addu   r1, r1}"),
                    389:  T(A(1, 1, 2), "addu    r1, r1, r2",           "{addu   r1, r2}"),
                    390:  T(A(1, 2, 0), "addu    r1, r2, r0",           "{mov    r1, r2}"),
                    391:  T(A(1, 2, 1), "addu    r1, r2, r1",           "{addu   r1, r2}"),
                    392:  T(A(1, 2, 2), "addu    r1, r2, r2",           "{addu   r1, r2, r2}"),
                    393:  T(A(1, 2, 3), "addu    r1, r2, r3",           "{addu   r1, r2, r3}"),
                    394: #undef A
                    395: 
                    396:  // Carry In/Out を含むやつは 2オペランドへの省略のみ (.coだけ代表でテスト)
                    397: #define A(d, s1, s2)   M(0xf400'6100, d, s1, s2)
                    398:  T(A(0, 0, 0), "addu.co r0, r0, r0",           "{addu.co r0, r0}"),
                    399:  T(A(0, 0, 1), "addu.co r0, r0, r1",           "{addu.co r0, r1}"),
                    400:  T(A(0, 1, 0), "addu.co r0, r1, r0",           "{addu.co r0, r1, r0}"),
                    401:  T(A(0, 1, 1), "addu.co r0, r1, r1",           "{addu.co r0, r1, r1}"),
                    402:  T(A(0, 1, 2), "addu.co r0, r1, r2",           "{addu.co r0, r1, r2}"),
                    403:  T(A(0, 2, 1), "addu.co r0, r2, r1",           "{addu.co r0, r2, r1}"),
                    404:  T(A(1, 0, 0), "addu.co r1, r0, r0",           "{addu.co r1, r0, r0}"),
                    405:  T(A(1, 0, 1), "addu.co r1, r0, r1",           "{addu.co r1, r0, r1}"),
                    406:  T(A(1, 0, 2), "addu.co r1, r0, r2",           "{addu.co r1, r0, r2}"),
                    407:  T(A(1, 1, 0), "addu.co r1, r1, r0",           "{addu.co r1, r0}"),
                    408:  T(A(1, 1, 1), "addu.co r1, r1, r1",           "{addu.co r1, r1}"),
                    409:  T(A(1, 1, 2), "addu.co r1, r1, r2",           "{addu.co r1, r2}"),
                    410:  T(A(1, 2, 0), "addu.co r1, r2, r0",           "{addu.co r1, r2, r0}"),
                    411:  T(A(1, 2, 1), "addu.co r1, r2, r1",           "{addu.co r1, r2, r1}"),
                    412:  T(A(1, 2, 2), "addu.co r1, r2, r2",           "{addu.co r1, r2, r2}"),
                    413:  T(A(1, 2, 3), "addu.co r1, r2, r3",           "{addu.co r1, r2, r3}"),
                    414: #undef A
                    415:  T(0xf6326201, "addu.ci r17,r18,r1",           "{addu.ci r17,r18,r1}"),
                    416:  T(0xf6326301, "addu.cio r17,r18,r1",          "{addu.cio r17,r18,r1}"),
                    417: 
                    418: #define A(d, s1, s2)   M(0xf400'6400, d, s1, s2)
                    419:  T(A(0, 0, 0), "subu    r0, r0, r0",           "{nop}"),
                    420:  T(A(0, 0, 1), "subu    r0, r0, r1",           "{nop}"),
                    421:  T(A(0, 1, 0), "subu    r0, r1, r0",           "{nop}"),
                    422:  T(A(0, 1, 1), "subu    r0, r1, r1",           "{nop}"),
                    423:  T(A(0, 1, 2), "subu    r0, r1, r2",           "{nop}"),
                    424:  T(A(0, 2, 1), "subu    r0, r2, r1",           "{nop}"),
                    425:  T(A(1, 0, 0), "subu    r1, r0, r0",           "{clr    r1}"),
                    426:  T(A(1, 0, 1), "subu    r1, r0, r1",           "{subu   r1, r0, r1}"),
                    427:  T(A(1, 0, 2), "subu    r1, r0, r2",           "{subu   r1, r0, r2}"),
                    428:  T(A(1, 1, 0), "subu    r1, r1, r0",           "{nop}"),
                    429:  T(A(1, 1, 1), "subu    r1, r1, r1",           "{clr    r1}"),
                    430:  T(A(1, 1, 2), "subu    r1, r1, r2",           "{subu   r1, r2}"),
                    431:  T(A(1, 2, 0), "subu    r1, r2, r0",           "{mov    r1, r2}"),
                    432:  T(A(1, 2, 1), "subu    r1, r2, r1",           "{subu   r1, r2, r1}"),
                    433:  T(A(1, 2, 2), "subu    r1, r2, r2",           "{clr    r1}"),
                    434:  T(A(1, 2, 3), "subu    r1, r2, r3",           "{subu   r1, r2, r3}"),
                    435: #undef A
                    436: 
                    437:  // Carry In/Out を含むやつは 2オペランドへの省略のみ (.coだけ代表でテスト)
                    438: #define A(d, s1, s2)   M(0xf400'6500, d, s1, s2)
                    439:  T(A(0, 0, 0), "subu.co r0, r0, r0",           "{subu.co r0, r0}"),
                    440:  T(A(0, 0, 1), "subu.co r0, r0, r1",           "{subu.co r0, r1}"),
                    441:  T(A(0, 1, 0), "subu.co r0, r1, r0",           "{subu.co r0, r1, r0}"),
                    442:  T(A(0, 1, 1), "subu.co r0, r1, r1",           "{subu.co r0, r1, r1}"),
                    443:  T(A(0, 1, 2), "subu.co r0, r1, r2",           "{subu.co r0, r1, r2}"),
                    444:  T(A(0, 2, 1), "subu.co r0, r2, r1",           "{subu.co r0, r2, r1}"),
                    445:  T(A(1, 0, 0), "subu.co r1, r0, r0",           "{subu.co r1, r0, r0}"),
                    446:  T(A(1, 0, 1), "subu.co r1, r0, r1",           "{subu.co r1, r0, r1}"),
                    447:  T(A(1, 0, 2), "subu.co r1, r0, r2",           "{subu.co r1, r0, r2}"),
                    448:  T(A(1, 1, 0), "subu.co r1, r1, r0",           "{subu.co r1, r0}"),
                    449:  T(A(1, 1, 1), "subu.co r1, r1, r1",           "{subu.co r1, r1}"),
                    450:  T(A(1, 1, 2), "subu.co r1, r1, r2",           "{subu.co r1, r2}"),
                    451:  T(A(1, 2, 0), "subu.co r1, r2, r0",           "{subu.co r1, r2, r0}"),
                    452:  T(A(1, 2, 1), "subu.co r1, r2, r1",           "{subu.co r1, r2, r1}"),
                    453:  T(A(1, 2, 2), "subu.co r1, r2, r2",           "{subu.co r1, r2, r2}"),
                    454:  T(A(1, 2, 3), "subu.co r1, r2, r3",           "{subu.co r1, r2, r3}"),
                    455: #undef A
                    456:  T(0xf6326601, "subu.ci r17,r18,r1",           "{subu.ci r17,r18,r1}"),
                    457:  T(0xf6326701, "subu.cio r17,r18,r1",          "{subu.cio r17,r18,r1}"),
                    458: 
                    459: #define A(d, s1, s2)   M(0xf400'6800, d, s1, s2)
                    460:  T(A(0, 0, 0), "divu    r0, r0, r0",           "{divu   r0, r0}"),
                    461:  T(A(0, 0, 1), "divu    r0, r0, r1",           "{divu   r0, r1}"),
                    462:  T(A(0, 1, 0), "divu    r0, r1, r0",           "{divu   r0, r1, r0}"),
                    463:  T(A(0, 1, 1), "divu    r0, r1, r1",           "{divu   r0, r1, r1}"),
                    464:  T(A(0, 1, 2), "divu    r0, r1, r2",           "{divu   r0, r1, r2}"),
                    465:  T(A(0, 2, 1), "divu    r0, r2, r1",           "{divu   r0, r2, r1}"),
                    466:  T(A(1, 0, 0), "divu    r1, r0, r0",           "{divu   r1, r0, r0}"),
                    467:  T(A(1, 0, 1), "divu    r1, r0, r1",           "{divu   r1, r0, r1}"),
                    468:  T(A(1, 0, 2), "divu    r1, r0, r2",           "{divu   r1, r0, r2}"),
                    469:  T(A(1, 1, 0), "divu    r1, r1, r0",           "{divu   r1, r0}"),
                    470:  T(A(1, 1, 1), "divu    r1, r1, r1",           "{divu   r1, r1}"),
                    471:  T(A(1, 1, 2), "divu    r1, r1, r2",           "{divu   r1, r2}"),
                    472:  T(A(1, 2, 0), "divu    r1, r2, r0",           "{divu   r1, r2, r0}"),
                    473:  T(A(1, 2, 1), "divu    r1, r2, r1",           "{divu   r1, r2, r1}"),
                    474:  T(A(1, 2, 2), "divu    r1, r2, r2",           "{divu   r1, r2, r2}"),
                    475:  T(A(1, 2, 3), "divu    r1, r2, r3",           "{divu   r1, r2, r3}"),
                    476: #undef A
                    477: 
                    478: #define A(d, s1, s2)   M(0xf400'6c00, d, s1, s2)
                    479:  T(A(0, 0, 0), "mul     r0, r0, r0",           "{mul    r0, r0}"),
                    480:  T(A(0, 0, 1), "mul     r0, r0, r1",           "{mul    r0, r1}"),
                    481:  T(A(0, 1, 0), "mul     r0, r1, r0",           "{mul    r0, r1, r0}"),
                    482:  T(A(0, 1, 1), "mul     r0, r1, r1",           "{mul    r0, r1, r1}"),
                    483:  T(A(0, 1, 2), "mul     r0, r1, r2",           "{mul    r0, r1, r2}"),
                    484:  T(A(0, 2, 1), "mul     r0, r2, r1",           "{mul    r0, r2, r1}"),
                    485:  T(A(1, 0, 0), "mul     r1, r0, r0",           "{mul    r1, r0, r0}"),
                    486:  T(A(1, 0, 1), "mul     r1, r0, r1",           "{mul    r1, r0, r1}"),
                    487:  T(A(1, 0, 2), "mul     r1, r0, r2",           "{mul    r1, r0, r2}"),
                    488:  T(A(1, 1, 0), "mul     r1, r1, r0",           "{mul    r1, r0}"),
                    489:  T(A(1, 1, 1), "mul     r1, r1, r1",           "{mul    r1, r1}"),
                    490:  T(A(1, 1, 2), "mul     r1, r1, r2",           "{mul    r1, r2}"),
                    491:  T(A(1, 2, 0), "mul     r1, r2, r0",           "{mul    r1, r2, r0}"),
                    492:  T(A(1, 2, 1), "mul     r1, r2, r1",           "{mul    r1, r2, r1}"),
                    493:  T(A(1, 2, 2), "mul     r1, r2, r2",           "{mul    r1, r2, r2}"),
                    494:  T(A(1, 2, 3), "mul     r1, r2, r3",           "{mul    r1, r2, r3}"),
                    495: #undef A
                    496: 
                    497: #define A(d, s1, s2)   M(0xf400'7000, d, s1, s2)
                    498:  T(A(0, 0, 0), "add     r0, r0, r0",           "{nop}"),
                    499:  T(A(0, 0, 1), "add     r0, r0, r1",           "{nop}"),
                    500:  T(A(0, 1, 0), "add     r0, r1, r0",           "{nop}"),
                    501:  T(A(0, 1, 1), "add     r0, r1, r1",           "{adds   r0, r1, r1}"),
                    502:  T(A(0, 1, 2), "add     r0, r1, r2",           "{adds   r0, r1, r2}"),
                    503:  T(A(0, 2, 1), "add     r0, r2, r1",           "{adds   r0, r2, r1}"),
                    504:  T(A(1, 0, 0), "add     r1, r0, r0",           "{clr    r1}"),
                    505:  T(A(1, 0, 1), "add     r1, r0, r1",           "{nop}"),
                    506:  T(A(1, 0, 2), "add     r1, r0, r2",           "{mov    r1, r2}"),
                    507:  T(A(1, 1, 0), "add     r1, r1, r0",           "{nop}"),
                    508:  T(A(1, 1, 1), "add     r1, r1, r1",           "{adds   r1, r1}"),
                    509:  T(A(1, 1, 2), "add     r1, r1, r2",           "{adds   r1, r2}"),
                    510:  T(A(1, 2, 0), "add     r1, r2, r0",           "{mov    r1, r2}"),
                    511:  T(A(1, 2, 1), "add     r1, r2, r1",           "{adds   r1, r2, r1}"),
                    512:  T(A(1, 2, 2), "add     r1, r2, r2",           "{adds   r1, r2, r2}"),
                    513:  T(A(1, 2, 3), "add     r1, r2, r3",           "{adds   r1, r2, r3}"),
                    514: #undef A
                    515: 
                    516:  // Carry In/Out を含むやつは 2オペランドへの省略のみ (.coだけ代表でテスト)
                    517: #define A(d, s1, s2)   M(0xf400'7100, d, s1, s2)
                    518:  T(A(0, 0, 0), "add.co  r0, r0, r0",           "{adds.co r0, r0}"),
                    519:  T(A(0, 0, 1), "add.co  r0, r0, r1",           "{adds.co r0, r1}"),
                    520:  T(A(0, 1, 0), "add.co  r0, r1, r0",           "{adds.co r0, r1, r0}"),
                    521:  T(A(0, 1, 1), "add.co  r0, r1, r1",           "{adds.co r0, r1, r1}"),
                    522:  T(A(0, 1, 2), "add.co  r0, r1, r2",           "{adds.co r0, r1, r2}"),
                    523:  T(A(0, 2, 1), "add.co  r0, r2, r1",           "{adds.co r0, r2, r1}"),
                    524:  T(A(1, 0, 0), "add.co  r1, r0, r0",           "{adds.co r1, r0, r0}"),
                    525:  T(A(1, 0, 1), "add.co  r1, r0, r1",           "{adds.co r1, r0, r1}"),
                    526:  T(A(1, 0, 2), "add.co  r1, r0, r2",           "{adds.co r1, r0, r2}"),
                    527:  T(A(1, 1, 0), "add.co  r1, r1, r0",           "{adds.co r1, r0}"),
                    528:  T(A(1, 1, 1), "add.co  r1, r1, r1",           "{adds.co r1, r1}"),
                    529:  T(A(1, 1, 2), "add.co  r1, r1, r2",           "{adds.co r1, r2}"),
                    530:  T(A(1, 2, 0), "add.co  r1, r2, r0",           "{adds.co r1, r2, r0}"),
                    531:  T(A(1, 2, 1), "add.co  r1, r2, r1",           "{adds.co r1, r2, r1}"),
                    532:  T(A(1, 2, 2), "add.co  r1, r2, r2",           "{adds.co r1, r2, r2}"),
                    533:  T(A(1, 2, 3), "add.co  r1, r2, r3",           "{adds.co r1, r2, r3}"),
                    534: #undef A
                    535:  T(0xf6327201, "add.ci  r17,r18,r1",           "{adds.ci r17,r18,r1}"),
                    536:  T(0xf6327301, "add.cio r17,r18,r1",           "{adds.cio r17,r18,r1}"),
                    537: 
                    538: #define A(d, s1, s2)   M(0xf400'7400, d, s1, s2)
                    539:  T(A(0, 0, 0), "sub     r0, r0, r0",           "{nop}"),
                    540:  T(A(0, 0, 1), "sub     r0, r0, r1",           "{subs   r0, r1}"),
                    541:  T(A(0, 1, 0), "sub     r0, r1, r0",           "{nop}"),
                    542:  T(A(0, 1, 1), "sub     r0, r1, r1",           "{subs   r0, r1, r1}"),
                    543:  T(A(0, 1, 2), "sub     r0, r1, r2",           "{subs   r0, r1, r2}"),
                    544:  T(A(0, 2, 1), "sub     r0, r2, r1",           "{subs   r0, r2, r1}"),
                    545:  T(A(1, 0, 0), "sub     r1, r0, r0",           "{clr    r1}"),
                    546:  T(A(1, 0, 1), "sub     r1, r0, r1",           "{subs   r1, r0, r1}"),
                    547:  T(A(1, 0, 2), "sub     r1, r0, r2",           "{subs   r1, r0, r2}"),
                    548:  T(A(1, 1, 0), "sub     r1, r1, r0",           "{nop}"),
                    549:  T(A(1, 1, 1), "sub     r1, r1, r1",           "{subs   r1, r1}"),
                    550:  T(A(1, 1, 2), "sub     r1, r1, r2",           "{subs   r1, r2}"),
                    551:  T(A(1, 2, 0), "sub     r1, r2, r0",           "{mov    r1, r2}"),
                    552:  T(A(1, 2, 1), "sub     r1, r2, r1",           "{subs   r1, r2, r1}"),
                    553:  T(A(1, 2, 2), "sub     r1, r2, r2",           "{subs   r1, r2, r2}"),
                    554:  T(A(1, 2, 3), "sub     r1, r2, r3",           "{subs   r1, r2, r3}"),
                    555: #undef A
                    556: 
                    557:  // Carry In/Out を含むやつは 2オペランドへの省略のみ (.coだけ代表でテスト)
                    558: #define A(d, s1, s2)   M(0xf400'7500, d, s1, s2)
                    559:  T(A(0, 0, 0), "sub.co  r0, r0, r0",           "{subs.co r0, r0}"),
                    560:  T(A(0, 0, 1), "sub.co  r0, r0, r1",           "{subs.co r0, r1}"),
                    561:  T(A(0, 1, 0), "sub.co  r0, r1, r0",           "{subs.co r0, r1, r0}"),
                    562:  T(A(0, 1, 1), "sub.co  r0, r1, r1",           "{subs.co r0, r1, r1}"),
                    563:  T(A(0, 1, 2), "sub.co  r0, r1, r2",           "{subs.co r0, r1, r2}"),
                    564:  T(A(0, 2, 1), "sub.co  r0, r2, r1",           "{subs.co r0, r2, r1}"),
                    565:  T(A(1, 0, 0), "sub.co  r1, r0, r0",           "{subs.co r1, r0, r0}"),
                    566:  T(A(1, 0, 1), "sub.co  r1, r0, r1",           "{subs.co r1, r0, r1}"),
                    567:  T(A(1, 0, 2), "sub.co  r1, r0, r2",           "{subs.co r1, r0, r2}"),
                    568:  T(A(1, 1, 0), "sub.co  r1, r1, r0",           "{subs.co r1, r0}"),
                    569:  T(A(1, 1, 1), "sub.co  r1, r1, r1",           "{subs.co r1, r1}"),
                    570:  T(A(1, 1, 2), "sub.co  r1, r1, r2",           "{subs.co r1, r2}"),
                    571:  T(A(1, 2, 0), "sub.co  r1, r2, r0",           "{subs.co r1, r2, r0}"),
                    572:  T(A(1, 2, 1), "sub.co  r1, r2, r1",           "{subs.co r1, r2, r1}"),
                    573:  T(A(1, 2, 2), "sub.co  r1, r2, r2",           "{subs.co r1, r2, r2}"),
                    574:  T(A(1, 2, 3), "sub.co  r1, r2, r3",           "{subs.co r1, r2, r3}"),
                    575: #undef A
                    576:  T(0xf6327601, "sub.ci  r17,r18,r1",           "{subs.ci r17,r18,r1}"),
                    577:  T(0xf6327701, "sub.cio r17,r18,r1",           "{subs.cio r17,r18,r1}"),
                    578: 
                    579: #define A(d, s1, s2)   M(0xf400'7800, d, s1, s2)
                    580:  T(A(0, 0, 0), "div     r0, r0, r0",           "{div    r0, r0}"),
                    581:  T(A(0, 0, 1), "div     r0, r0, r1",           "{div    r0, r1}"),
                    582:  T(A(0, 1, 0), "div     r0, r1, r0",           "{div    r0, r1, r0}"),
                    583:  T(A(0, 1, 1), "div     r0, r1, r1",           "{div    r0, r1, r1}"),
                    584:  T(A(0, 1, 2), "div     r0, r1, r2",           "{div    r0, r1, r2}"),
                    585:  T(A(0, 2, 1), "div     r0, r2, r1",           "{div    r0, r2, r1}"),
                    586:  T(A(1, 0, 0), "div     r1, r0, r0",           "{div    r1, r0, r0}"),
                    587:  T(A(1, 0, 1), "div     r1, r0, r1",           "{div    r1, r0, r1}"),
                    588:  T(A(1, 0, 2), "div     r1, r0, r2",           "{div    r1, r0, r2}"),
                    589:  T(A(1, 1, 0), "div     r1, r1, r0",           "{div    r1, r0}"),
                    590:  T(A(1, 1, 1), "div     r1, r1, r1",           "{div    r1, r1}"),
                    591:  T(A(1, 1, 2), "div     r1, r1, r2",           "{div    r1, r2}"),
                    592:  T(A(1, 2, 0), "div     r1, r2, r0",           "{div    r1, r2, r0}"),
                    593:  T(A(1, 2, 1), "div     r1, r2, r1",           "{div    r1, r2, r1}"),
                    594:  T(A(1, 2, 2), "div     r1, r2, r2",           "{div    r1, r2, r2}"),
                    595:  T(A(1, 2, 3), "div     r1, r2, r3",           "{div    r1, r2, r3}"),
                    596: #undef A
                    597: 
                    598: #define A(d, s1, s2)   M(0xf400'7c00, d, s1, s2)
                    599:  T(A(0, 0, 0), "cmp     r0, r0, r0",           "{nop}"),
                    600:  T(A(0, 0, 1), "cmp     r0, r0, r1",           "{nop}"),
                    601:  T(A(0, 1, 0), "cmp     r0, r1, r0",           "{nop}"),
                    602:  T(A(0, 1, 1), "cmp     r0, r1, r1",           "{nop}"),
                    603:  T(A(0, 1, 2), "cmp     r0, r1, r2",           "{nop}"),
                    604:  T(A(0, 2, 1), "cmp     r0, r2, r1",           "{nop}"),
                    605:  O(A(1, 0, 0), "cmp     r1, r0, r0"),
                    606:  O(A(1, 0, 1), "cmp     r1, r0, r1"),
                    607:  O(A(1, 0, 2), "cmp     r1, r0, r2"),
                    608:  O(A(1, 1, 0), "cmp     r1, r1, r0"),
                    609:  O(A(1, 1, 1), "cmp     r1, r1, r1"),
                    610:  O(A(1, 1, 2), "cmp     r1, r1, r2"),
                    611:  O(A(1, 2, 0), "cmp     r1, r2, r0"),
                    612:  O(A(1, 2, 1), "cmp     r1, r2, r1"),
                    613:  O(A(1, 2, 2), "cmp     r1, r2, r2"),
                    614:  O(A(1, 2, 3), "cmp     r1, r2, r3"),
                    615: #undef A
                    616: 
                    617: #define A(d, s1, s2)   M(0xf400'8000, d, s1, s2)
                    618:  T(A(0, 0, 0), "clr     r0, r0, r0",           "{nop}"),
                    619:  T(A(0, 0, 1), "clr     r0, r0, r1",           "{nop}"),
                    620:  T(A(0, 1, 0), "clr     r0, r1, r0",           "{nop}"),
                    621:  T(A(0, 1, 1), "clr     r0, r1, r1",           "{nop}"),
                    622:  T(A(0, 1, 2), "clr     r0, r1, r2",           "{nop}"),
                    623:  T(A(0, 2, 1), "clr     r0, r2, r1",           "{nop}"),
                    624:  T(A(1, 0, 0), "clr     r1, r0, r0",           "{clr    r1}"),
                    625:  T(A(1, 0, 1), "clr     r1, r0, r1",           "{clr    r1}"),
                    626:  T(A(1, 0, 2), "clr     r1, r0, r2",           "{clr    r1}"),
                    627:  T(A(1, 1, 0), "clr     r1, r1, r0",           "{nop}"),
                    628:  T(A(1, 1, 1), "clr     r1, r1, r1",           "{bfclr  r1, r1}"),
                    629:  T(A(1, 1, 2), "clr     r1, r1, r2",           "{bfclr  r1, r2}"),
                    630:  T(A(1, 2, 0), "clr     r1, r2, r0",           "{mov    r1, r2}"),
                    631:  T(A(1, 2, 1), "clr     r1, r2, r1",           "{bfclr  r1, r2, r1}"),
                    632:  T(A(1, 2, 2), "clr     r1, r2, r2",           "{bfclr  r1, r2, r2}"),
                    633:  T(A(1, 2, 3), "clr     r1, r2, r3",           "{bfclr  r1, r2, r3}"),
                    634: #undef A
                    635: 
                    636: #define A(d, s1, s2)   M(0xf400'8800, d, s1, s2)
                    637:  T(A(0, 0, 0), "set     r0, r0, r0",           "{nop}"),
                    638:  T(A(0, 0, 1), "set     r0, r0, r1",           "{nop}"),
                    639:  T(A(0, 1, 0), "set     r0, r1, r0",           "{nop}"),
                    640:  T(A(0, 1, 1), "set     r0, r1, r1",           "{nop}"),
                    641:  T(A(0, 1, 2), "set     r0, r1, r2",           "{nop}"),
                    642:  T(A(0, 2, 1), "set     r0, r2, r1",           "{nop}"),
                    643:  T(A(1, 0, 0), "set     r1, r0, r0",           "{mov    r1, #0xffffffff}"),
                    644:  T(A(1, 0, 1), "set     r1, r0, r1",           "{bfset  r1, r0, r1}"),
                    645:  T(A(1, 0, 2), "set     r1, r0, r2",           "{bfset  r1, r0, r2}"),
                    646:  T(A(1, 1, 0), "set     r1, r1, r0",           "{mov    r1, #0xffffffff}"),
                    647:  T(A(1, 1, 1), "set     r1, r1, r1",           "{bfset  r1, r1}"),
                    648:  T(A(1, 1, 2), "set     r1, r1, r2",           "{bfset  r1, r2}"),
                    649:  T(A(1, 2, 0), "set     r1, r2, r0",           "{mov    r1, #0xffffffff}"),
                    650:  T(A(1, 2, 1), "set     r1, r2, r1",           "{bfset  r1, r2, r1}"),
                    651:  T(A(1, 2, 2), "set     r1, r2, r2",           "{bfset  r1, r2, r2}"),
                    652:  T(A(1, 2, 3), "set     r1, r2, r3",           "{bfset  r1, r2, r3}"),
                    653: #undef A
                    654: 
                    655: #define A(d, s1, s2)   M(0xf400'9000, d, s1, s2)
                    656:  T(A(0, 0, 0), "ext     r0, r0, r0",           "{nop}"),
                    657:  T(A(0, 0, 1), "ext     r0, r0, r1",           "{nop}"),
                    658:  T(A(0, 1, 0), "ext     r0, r1, r0",           "{nop}"),
                    659:  T(A(0, 1, 1), "ext     r0, r1, r1",           "{nop}"),
                    660:  T(A(0, 1, 2), "ext     r0, r1, r2",           "{nop}"),
                    661:  T(A(0, 2, 1), "ext     r0, r2, r1",           "{nop}"),
                    662:  T(A(1, 0, 0), "ext     r1, r0, r0",           "{mov    r1, r0}"),
                    663:  T(A(1, 0, 1), "ext     r1, r0, r1",           "{bfexts r1, r0, r1}"),
                    664:  T(A(1, 0, 2), "ext     r1, r0, r2",           "{bfexts r1, r0, r2}"),
                    665:  T(A(1, 1, 0), "ext     r1, r1, r0",           "{nop}"),
                    666:  T(A(1, 1, 1), "ext     r1, r1, r1",           "{bfexts r1, r1}"),
                    667:  T(A(1, 1, 2), "ext     r1, r1, r2",           "{bfexts r1, r2}"),
                    668:  T(A(1, 2, 0), "ext     r1, r2, r0",           "{mov    r1, r2}"),
                    669:  T(A(1, 2, 1), "ext     r1, r2, r1",           "{bfexts r1, r2, r1}"),
                    670:  T(A(1, 2, 2), "ext     r1, r2, r2",           "{bfexts r1, r2, r2}"),
                    671:  T(A(1, 2, 3), "ext     r1, r2, r3",           "{bfexts r1, r2, r3}"),
                    672: #undef A
                    673: 
                    674: #define A(d, s1, s2)   M(0xf400'9800, d, s1, s2)
                    675:  T(A(0, 0, 0), "extu    r0, r0, r0",           "{nop}"),
                    676:  T(A(0, 0, 1), "extu    r0, r0, r1",           "{nop}"),
                    677:  T(A(0, 1, 0), "extu    r0, r1, r0",           "{nop}"),
                    678:  T(A(0, 1, 1), "extu    r0, r1, r1",           "{nop}"),
                    679:  T(A(0, 1, 2), "extu    r0, r1, r2",           "{nop}"),
                    680:  T(A(0, 2, 1), "extu    r0, r2, r1",           "{nop}"),
                    681:  T(A(1, 0, 0), "extu    r1, r0, r0",           "{mov    r1, r0}"),
                    682:  T(A(1, 0, 1), "extu    r1, r0, r1",           "{bfextu r1, r0, r1}"),
                    683:  T(A(1, 0, 2), "extu    r1, r0, r2",           "{bfextu r1, r0, r2}"),
                    684:  T(A(1, 1, 0), "extu    r1, r1, r0",           "{nop}"),
                    685:  T(A(1, 1, 1), "extu    r1, r1, r1",           "{bfextu r1, r1}"),
                    686:  T(A(1, 1, 2), "extu    r1, r1, r2",           "{bfextu r1, r2}"),
                    687:  T(A(1, 2, 0), "extu    r1, r2, r0",           "{mov    r1, r2}"),
                    688:  T(A(1, 2, 1), "extu    r1, r2, r1",           "{bfextu r1, r2, r1}"),
                    689:  T(A(1, 2, 2), "extu    r1, r2, r2",           "{bfextu r1, r2, r2}"),
                    690:  T(A(1, 2, 3), "extu    r1, r2, r3",           "{bfextu r1, r2, r3}"),
                    691: #undef A
                    692: 
                    693: #define A(d, s1, s2)   M(0xf400'a000, d, s1, s2)
                    694:  T(A(0, 0, 0), "mak     r0, r0, r0",           "{nop}"),
                    695:  T(A(0, 0, 1), "mak     r0, r0, r1",           "{nop}"),
                    696:  T(A(0, 1, 0), "mak     r0, r1, r0",           "{nop}"),
                    697:  T(A(0, 1, 1), "mak     r0, r1, r1",           "{nop}"),
                    698:  T(A(0, 1, 2), "mak     r0, r1, r2",           "{nop}"),
                    699:  T(A(0, 2, 1), "mak     r0, r2, r1",           "{nop}"),
                    700:  T(A(1, 0, 0), "mak     r1, r0, r0",           "{clr    r1}"),
                    701:  T(A(1, 0, 1), "mak     r1, r0, r1",           "{clr    r1}"),
                    702:  T(A(1, 0, 2), "mak     r1, r0, r2",           "{clr    r1}"),
                    703:  T(A(1, 1, 0), "mak     r1, r1, r0",           "{nop}"),
                    704:  T(A(1, 1, 1), "mak     r1, r1, r1",           "{bfmak  r1, r1}"),
                    705:  T(A(1, 1, 2), "mak     r1, r1, r2",           "{bfmak  r1, r2}"),
                    706:  T(A(1, 2, 0), "mak     r1, r2, r0",           "{mov    r1, r2}"),
                    707:  T(A(1, 2, 1), "mak     r1, r2, r1",           "{bfmak  r1, r2, r1}"),
                    708:  T(A(1, 2, 2), "mak     r1, r2, r2",           "{bfmak  r1, r2, r2}"),
                    709:  T(A(1, 2, 3), "mak     r1, r2, r3",           "{bfmak  r1, r2, r3}"),
                    710: #undef A
                    711: 
                    712: #define A(d, s1, s2)   M(0xf400'a800, d, s1, s2)
                    713:  T(A(0, 0, 0), "rot     r0, r0, r0",           "{nop}"),
                    714:  T(A(0, 0, 1), "rot     r0, r0, r1",           "{nop}"),
                    715:  T(A(0, 1, 0), "rot     r0, r1, r0",           "{nop}"),
                    716:  T(A(0, 1, 1), "rot     r0, r1, r1",           "{nop}"),
                    717:  T(A(0, 1, 2), "rot     r0, r1, r2",           "{nop}"),
                    718:  T(A(0, 2, 1), "rot     r0, r2, r1",           "{nop}"),
                    719:  T(A(1, 0, 0), "rot     r1, r0, r0",           "{clr    r1}"),
                    720:  T(A(1, 0, 1), "rot     r1, r0, r1",           "{clr    r1}"),
                    721:  T(A(1, 0, 2), "rot     r1, r0, r2",           "{clr    r1}"),
                    722:  T(A(1, 1, 0), "rot     r1, r1, r0",           "{nop}"),
                    723:  T(A(1, 1, 1), "rot     r1, r1, r1",           "{ror    r1, r1}"),
                    724:  T(A(1, 1, 2), "rot     r1, r1, r2",           "{ror    r1, r2}"),
                    725:  T(A(1, 2, 0), "rot     r1, r2, r0",           "{mov    r1, r2}"),
                    726:  T(A(1, 2, 1), "rot     r1, r2, r1",           "{ror    r1, r2, r1}"),
                    727:  T(A(1, 2, 2), "rot     r1, r2, r2",           "{ror    r1, r2, r2}"),
                    728:  T(A(1, 2, 3), "rot     r1, r2, r3",           "{ror    r1, r2, r3}"),
                    729: #undef A
                    730: 
                    731:  O(0xf400c011, "jmp     r17"),
                    732:  O(0xf400c411, "jmp.n   r17"),
                    733:  O(0xf400c811, "jsr     r17"),
                    734:  O(0xf400cc11, "jsr.n   r17"),
                    735: 
                    736: #define A(d, s2)               M(0xf400'e800, d, 0, s2)
                    737:  T(A(0, 0),    "ff1     r0, r0",                       "{nop}"),
                    738:  T(A(0, 1),    "ff1     r0, r1",                       "{nop}"),
                    739:  T(A(1, 0),    "ff1     r1, r0",                       "{mov    r1, #32}"),
                    740:  T(A(1, 1),    "ff1     r1, r1",                       "{ff1    r1, r1}"),
                    741:  T(A(1, 2),    "ff1     r1, r2",                       "{ff1    r1, r2}"),
                    742: #undef A
                    743: #define A(d, s2)               M(0xf400'ec00, d, 0, s2)
                    744:  T(A(0, 0),    "ff0     r0, r0",                       "{nop}"),
                    745:  T(A(0, 1),    "ff0     r0, r1",                       "{nop}"),
                    746:  T(A(1, 0),    "ff0     r1, r0",                       "{clr    r1}"),
                    747:  T(A(1, 1),    "ff0     r1, r1",                       "{ff0    r1, r1}"),
                    748:  T(A(1, 2),    "ff0     r1, r2",                       "{ff0    r1, r2}"),
                    749: #undef A
                    750: 
                    751:  O(0xf400fc00, "rte"),
                    752:  O(0xf411f801, "tbnd    r17,r1"),
                    753:  O(0xf8118765, "tbnd    r17,#0x8765"),
1.1       root      754: };
                    755: 
                    756: static uint8 ram[1024];
                    757: static int failed;
                    758: 
1.1.1.5   root      759: #include "test_debugger_memory.cpp"
1.1       root      760: 
                    761: // リンカを通すためのダミー
1.1.1.5   root      762: DisasmLine::~DisasmLine() { }
1.1       root      763: DebuggerMD::~DebuggerMD() { }
1.1.1.8 ! root      764: uint32 DebuggerMD::GetNextPC() { return 0; }
        !           765: void DebuggerMD::PrintExceptionFrame(FILE *, busaddr) { }
1.1       root      766: 
                    767: int
                    768: main(int ac, char *av[])
                    769: {
1.1.1.6   root      770:        busaddr saddr;
1.1       root      771: 
1.1.1.4   root      772:        m88100disasm::use_altname = 1;
1.1.1.2   root      773: 
1.1       root      774:        // DebuggerMD (の継承クラス)を用意するのは芋づる式に大変なので、
                    775:        // 中でアクセスする変数だけ強引に用意する。
1.1.1.7   root      776:        DebuggerMD *md = (DebuggerMD *)calloc(1, sizeof(DebuggerMD));
1.1       root      777:        md->inst_bytes = 4;
                    778: 
                    779:        for (int i = 0; i < countof(table); i++) {
1.1.1.2   root      780:                int line = table[i].line;
                    781:                std::string expstd = table[i].expstd;
                    782:                std::string expalt = table[i].expalt;
1.1       root      783:                uint32 inst = table[i].inst;
                    784: 
                    785:                // エラー表示用
1.1.1.2   root      786:                std::string inst_str = string_format("%d: $%08x", line, inst);
1.1       root      787: 
                    788:                // 全体を初期化
                    789:                memset(ram, 0xdd, sizeof(ram));
                    790:                // 100番地に命令列を書き込む
                    791:                *(uint16 *)(ram + 0x100) = inst >> 16;
                    792:                *(uint16 *)(ram + 0x102) = inst & 0xffff;
                    793:                // 検査
1.1.1.7   root      794:                saddr = busaddr(0x100);
1.1.1.5   root      795:                m88100disasm dis;
                    796:                DebuggerMemoryStream mem(NULL, saddr);
                    797:                dis.Exec(&mem);
1.1       root      798:                // 照合
1.1.1.2   root      799:                if (dis.text != expstd) {
                    800:                        printf("%s std expects \"%s\" but \"%s\"\n", inst_str.c_str(),
                    801:                                expstd.c_str(), dis.text.c_str());
1.1       root      802:                        failed++;
                    803:                        continue;
                    804:                }
                    805:                uint32 expected_len = 4;
                    806:                if (dis.bin.size() != expected_len) {
1.1.1.2   root      807:                        printf("%s std expects len=$%x but $%x\n", inst_str.c_str(),
1.1       root      808:                                expected_len, (uint)dis.bin.size());
                    809:                        failed++;
                    810:                        continue;
                    811:                }
1.1.1.2   root      812: 
                    813:                // 照合(別名)
                    814:                if (dis.alttext != expalt) {
                    815:                        printf("%s alt expects \"%s\" but \"%s\"\n", inst_str.c_str(),
                    816:                                expalt.c_str(), dis.alttext.c_str());
                    817:                        failed++;
                    818:                        continue;
                    819:                }
1.1       root      820:        }
                    821: 
                    822:        int total = countof(table);
                    823:        printf("%d tests, %d success", total, total - failed);
                    824:        if (failed > 0) {
                    825:                printf(", %d failed", failed);
                    826:        }
                    827:        printf("\n");
                    828:        return 0;
                    829: }

unix.superglobalmegacorp.com

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