|
|
1.1 root 1: ;
2: ; nono
1.1.1.7 ! root 3: ; Copyright (C) 2014 Tetsuya Isaki
1.1.1.2 root 4: ; Copyright (C) 2020 nono project
5: ; Licensed under nono-license.txt
1.1 root 6: ;
7:
8: ; ビットパターンはこの定義順に展開するので、前の行を後の行で上書きする。
9: ; そのためより限定的なほうを後ろ(下)に記述すること。
10: ; それ以外は概ねソートすること。
11: ;
12: ; ビットパターン
13: ; 0, 1 … 0 または 1 固定のビット
1.1.1.3 root 14: ; n, c … 0 および 1 の両方に展開される
1.1 root 15: ; SS … サイズ (b/w/l)
16: ; s … サイズ (w/l)
17: ; mmmrrr … EA
18: ; RRRMMM … MOVE 命令のデスティネーション用 EA
19: ; xxx,yyy… レジスタ番号(%000-%111)に展開。
20: ; qqq … 即値(%000-%111)に展開。
1.1.1.5 root 21: ; CCC … cpID(%011-%111)に展開。
1.1 root 22: ;
23: ; 関数名
24: ; ニーモニックのうち小文字の部分はそのまま使用される。
25: ; 大文字は以下のとおり展開する。
26: ; S … "SS"/"s" のサイズに応じて b/w/l に展開
27: ; EA … アドレッシングモード mmmrrr に応じて reg/mem に展開
28: ; DD … アドレッシングモード RRRMMM に応じて reg/mem に展開
29: ; なお、同一10(13)bit ブロック内に複数の命令が共存する場合、ここに書いた
30: ; すべての関数名が必ずしも出力されるわけではない。
31: ;
32: ; 表示名
33: ; ニーモニックのうち ".S" は適切なサイズに置き換えられる。
34: ; それ以外はそのまま。
35: ; 同一10(13)bit ブロック内に複数の命令がある場合でも、ここに書いた表示名は
36: ; すべてコメントとして列挙される。
37: ;
38: ;
39: ;ビットパターン ADDRESSING MPU 関数名 表示名
40: 00000000SSmmmrrr d.m+-rxw.. 034 ori_S ORI.S #<imm>,<ea>
41: 0000000000111100 .......... 034 ori_ccr ORI.B #<imm>,CCR
42: 0000000001111100 .......... 034 ori_sr ORI.W #<imm>,SR
43: 00000010SSmmmrrr d.m+-rxw.. 034 andi_S ANDI.S #<imm>,<ea>
44: 0000001000111100 .......... 034 andi_ccr ANDI.B #<imm>,CCR
45: 0000001001111100 .......... 034 andi_sr ANDI.W #<imm>,SR
46: 00000100SSmmmrrr d.m+-rxw.. 034 subi_S SUBI.S #<imm>,<ea>
47: 00000110SSmmmrrr d.m+-rxw.. 034 addi_S ADDI.S #<imm>,<ea>
48: 00000SS011mmmrrr ..m..rxwp. -34 cmp2chk2_S CMP2/CHK2.S <ea>,Rn
49: 0000011011mmmrrr ..m..rxwp. 2-- callm CALLM #<imm>,<ea>
50: 000001101100nnnn .......... 2-- rtm RTM Rn
51: 0000100000mmmrrr ..m+-rxwp. 034 btst_imm_ea BTST.B #<imm>,<ea>
52: 0000100000000yyy .......... 034 btst_imm_dn BTST.L #<imm>,Dy
53: 0000100001mmmrrr ..m+-rxw.. 034 bchg_imm_ea BCHG.B #<imm>,<ea>
54: 0000100001000yyy .......... 034 bchg_imm_dn BCHG.L #<imm>,Dy
55: 0000100010mmmrrr ..m+-rxw.. 034 bclr_imm_ea BCLR.B #<imm>,<ea>
56: 0000100010000yyy .......... 034 bclr_imm_dn BCLR.L #<imm>,Dy
57: 0000100011mmmrrr ..m+-rxw.. 034 bset_imm_ea BSET.B #<imm>,<ea>
58: 0000100011000yyy .......... 034 bset_imm_dn BSET.L #<imm>,Dy
59: 00001010SSmmmrrr d.m+-rxw.. 034 eori_S EORI.S #<imm>,<ea>
60: 0000101000111100 .......... 034 eori_ccr EORI.B #<imm>,CCR
61: 0000101001111100 .......... 034 eori_sr EORI.W #<imm>,SR
62: 0000101011mmmrrr ..m+-rxw.. -34 cas_b CAS.B Dc,Du,<ea>
63: 00001100SSmmmrrr d.m+-rxw.. 0-- cmpi_S CMPI.S #<imm>,<ea>
64: 00001100SSmmmrrr d.m+-rxwp. -34 cmpi_S CMPI.S #<imm>,<ea>
65: 00001110SSmmmrrr ..m+-rxw.. -34 moves_S MOVES.S <ea>,Rn
66: 00001110SSmmmrrr ..m+-rxw.. -34 moves_S MOVES.S Rn,<ea>
67: 000011s011mmmrrr ..m+-rxw.. -34 cas_S CAS.S Dc,Du,<ea>
68: 000011s011111100 .......... -34 cas2_S CAS2.S Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)
69: 0000xxx100mmmrrr ..m+-rxwpi 034 btst_dn_ea BTST.B Dx,<ea>
70: 0000xxx100000yyy .......... 034 btst_dn_dn BTST.L Dx,Dy
71: 0000xxx101mmmrrr ..m+-rxw.. 034 bchg_dn_ea BCHG.B Dx,<ea>
72: 0000xxx101000yyy .......... 034 bchg_dn_dn BCHG.L Dx,Dy
73: 0000xxx111mmmrrr ..m+-rxw.. 034 bset_dn_ea BSET.B Dx,<ea>
74: 0000xxx111000yyy .......... 034 bset_dn_dn BSET.L Dx,Dy
75: 0000xxx110mmmrrr ..m+-rxw.. 034 bclr_dn_ea BCLR.B Dx,<ea>
76: 0000xxx110000yyy .......... 034 bclr_dn_dn BCLR.L Dx,Dy
77: 0000xxx10s001yyy .......... 034 movep_S_mem_dn MOVEP.S (d,Ay),Dx
78: 0000xxx11s001yyy .......... 034 movep_S_dn_mem MOVEP.S Dx,(d,Ay)
79: 0001RRRMMMmmmrrr d.m+-rxwpi 034 move_b_ea_DD MOVE.B <ea>,DD
80: 0010RRRMMMmmmrrr dam+-rxwpi 034 move_l_ea_DD MOVE.L <ea>,DD
81: 0010xxx001mmmrrr dam+-rxwpi 034 movea_l MOVEA.L <ea>,Ax
82: 0011RRRMMMmmmrrr dam+-rxwpi 034 move_w_ea_DD MOVE.W <ea>,DD
83: 0011xxx001mmmrrr dam+-rxwpi 034 movea_w MOVEA.W <ea>,Ax
84: 0100000011mmmrrr d.m+-rxw.. 0-- move_sr_ea MOVE.W SR,<ea>
85: 01000000SSmmmrrr d.m+-rxw.. 034 negx_S NEGX.S <ea>
86: 0100000011mmmrrr d.m+-rxw.. -34 move_sr_ea MOVE.W SR,<ea>
87: 01000010SSmmmrrr d.m+-rxw.. 034 clr_S CLR.S <ea>
88: 0100001011mmmrrr d.m+-rxw.. -34 move_ccr_ea MOVE.W CCR,<ea>
89: 01000100SSmmmrrr d.m+-rxw.. 034 neg_S NEG.S <ea>
90: 0100010011mmmrrr d.m+-rxwpi 034 move_ea_ccr MOVE.W <ea>,CCR
91: 01000110SSmmmrrr d.m+-rxw.. 034 not_S NOT.S <ea>
92: 0100011011mmmrrr d.m+-rxwpi 034 move_ea_sr MOVE.W <ea>,SR
93: 0100100000001yyy .......... -34 link_l LINK.L Ay,#<imm>
94: 0100100000mmmrrr d.m+-rxw.. 034 nbcd NBCD.B <ea>
95: 0100100001000yyy .......... 034 swap SWAP.W Dy
96: 0100100001001nnn .......... -34 bkpt BKPT #<imm>
97: 0100100001mmmrrr ..m..rxwp. 034 pea PEA.L <ea>
98: 010010001s000yyy .......... 034 ext_S EXT.S Dy
99: 010010001smmmrrr ..m.-rxw.. 034 movem_S_mem MOVEM.S <list>,<ea>
100: 0100100111000yyy .......... -34 extb EXTB.L Dy
101: 01001010SSmmmrrr d.m+-rxw.. 0-- tst_S TST.S <ea>
102: 01001010SSmmmrrr dam+-rxwpi -34 tst_S TST.S <ea>
103: 0100101011mmmrrr d.m+-rxw.. 034 tas TAS.B <ea>
104: 0100101011111100 .......... 034 illegal ILLEGAL
1.1.1.5 root 105: 0100110000mmmrrr d.m+-rxwpi -34 mul MULS.L <ea>,Dl
106: 0100110000mmmrrr d.m+-rxwpi -34 mul MULS.L <ea>,Dh:Dl
107: 0100110000mmmrrr d.m+-rxwpi -34 mul MULU.L <ea>,Dl
108: 0100110000mmmrrr d.m+-rxwpi -34 mul MULU.L <ea>,Dh:Dl
109: 0100110001mmmrrr d.m+-rxwpi -34 div DIVS.L <ea>,Dq
110: 0100110001mmmrrr d.m+-rxwpi -34 div DIVS.L <ea>,Dr:Dq
111: 0100110001mmmrrr d.m+-rxwpi -34 div DIVSL.L <ea>,Dr:Dq
112: 0100110001mmmrrr d.m+-rxwpi -34 div DIVU.L <ea>,Dq
113: 0100110001mmmrrr d.m+-rxwpi -34 div DIVU.L <ea>,Dr:Dq
114: 0100110001mmmrrr d.m+-rxwpi -34 div DIVUL.L <ea>,Dr:Dq
1.1 root 115: 010011001smmmrrr ..m+.rxwp. 034 movem_S MOVEM.S <ea>,<list>
116: 010011100100nnnn .......... 034 trap TRAP #<vector>
117: 0100111001010yyy .......... 034 link_w LINK.W Ay,#<imm>
118: 0100111001011yyy .......... 034 unlk UNLK Ay
119: 0100111001100yyy .......... 034 move_an_usp MOVE.L Ay,USP
120: 0100111001101yyy .......... 034 move_usp_an MOVE.L USP,Ay
121: 0100111001110000 .......... 034 reset RESET
122: 0100111001110001 .......... 034 nop NOP
123: 0100111001110010 .......... 034 stop STOP #<imm>
124: 0100111001110011 .......... 034 rte RTE
125: 0100111001110100 .......... -34 rtd RTD #<imm>
126: 0100111001110101 .......... 034 rts RTS
127: 0100111001110110 .......... 034 trapv TRAPV
128: 0100111001110111 .......... 034 rtr RTR
129: 0100111001111010 .......... -34 movec_from MOVEC.L Rc,Rn
130: 0100111001111011 .......... -34 movec_to MOVEC.L Rn,Rc
131: 0100111010mmmrrr ..m..rxwp. 034 jsr JSR <ea>
132: 0100111011mmmrrr ..m..rxwp. 034 jmp JMP <ea>
133: 0100xxx100mmmrrr d.m+-rxwpi -34 chk_l CHK.L <ea>,Dx
134: 0100xxx110mmmrrr d.m+-rxwpi 034 chk_w CHK.W <ea>,Dx
135: 0100xxx111mmmrrr ..m..rxwp. 034 lea LEA.L <ea>,Ax
136: 0101cccc11mmmrrr d.m+-rxw.. 034 scc Scc.B <ea>
137: 0101cccc11001yyy .......... 034 dbcc DBcc.W Dy,<label>
138: 0101000111001yyy .......... 034 dbra DBRA.W Dy,<label>
139: 0101cccc11111010 .......... -34 trapcc TRAPcc.W #<imm>
140: 0101cccc11111011 .......... -34 trapcc TRAPcc.L #<imm>
141: 0101cccc11111100 .......... -34 trapcc TRAPcc
142: 0101qqq0SSmmmrrr d.m+-rxw.. 034 addq_S ADDQ.S #qqq,<ea>
143: 0101qqq001001yyy .a........ 034 addq_l_an ADDQ.W #qqq,Ay (.Lと等価)
144: 0101qqq010001yyy .a........ 034 addq_l_an ADDQ.L #qqq,Ay
145: 0101qqq1SSmmmrrr d.m+-rxw.. 034 subq_S SUBQ.S #qqq,<ea>
146: 0101qqq101001yyy .a........ 034 subq_l_an SUBQ.W #qqq,Ay (.Lと等価)
147: 0101qqq110001yyy .a........ 034 subq_l_an SUBQ.L #qqq,Ay
148: 0110ccccnnnnnnnn .......... 034 bcc Bcc.B <label>
149: 0110cccc00000000 .......... 034 bcc Bcc.W <label>
150: 0110cccc11111111 .......... -34 bcc Bcc.L <label>
151: 01100000nnnnnnnn .......... 034 bra BRA.B <label>
152: 0110000000000000 .......... 034 bra BRA.W <label>
153: 0110000011111111 .......... -34 bra BRA.L <label>
154: 01100001nnnnnnnn .......... 034 bsr BSR.B <label>
155: 0110000100000000 .......... 034 bsr BSR.W <label>
156: 0110000111111111 .......... -34 bsr BSR.L <label>
157: 0111xxx0nnnnnnnn .......... 034 moveq MOVEQ.L #<imm>,Dx
158: 1000xxx011mmmrrr d.m+-rxwpi 034 divu_w DIVU.W <ea>,Dx
159: 1000xxx0SSmmmrrr d.m+-rxwpi 034 or_S_ea_dn OR.S <ea>,Dx
160: 1000xxx111mmmrrr d.m+-rxwpi 034 divs_w DIVS.W <ea>,Dx
161: 1000xxx1SSmmmrrr ..m+-rxw.. 034 or_S_dn_ea OR.S Dx,<ea>
162: 1000xxx100000yyy .......... 034 sbcd_reg SBCD.B Dy,Dx
163: 1000xxx100001yyy .......... 034 sbcd_mem SBCD.B -(Ay),-(Ax)
164: 1000xxx101000yyy .......... -34 pack_reg PACK Dy,Dx,#<imm>
165: 1000xxx101001yyy .......... -34 pack_mem PACK -(Ay),-(Ax),#<imm>
166: 1000xxx110000yyy .......... -34 unpk_reg UNPK Dy,Dx,#<imm>
167: 1000xxx110001yyy .......... -34 unpk_mem UNPK -(Ay),-(Ax),#<imm>
168: 1001xxx0SSmmmrrr dam+-rxwpi 034 sub_S_ea_dn SUB.S <ea>,Dx
169: 1001xxx1SSmmmrrr ..m+-rxw.. 034 sub_S_dn_ea SUB.S Dx,<ea>
170: 1001xxx1SS000yyy .......... 034 subx_S_reg SUBX.S Dy,Dx
171: 1001xxx1SS001yyy .......... 034 subx_S_mem SUBX.S -(Ay),-(Ax)
172: 1001xxxs11mmmrrr dam+-rxwpi 034 suba_S SUBA.S <ea>,Ax
173: 1010nnnnnnnnnnnn .......... 034 aline A-Line
174: 1011xxx0SSmmmrrr d.m+-rxwpi 034 cmp_S CMP.S <ea>,Dx
175: 1011xxx1SSmmmrrr d.m+-rxw.. 034 eor_S EOR.S Dx,<ea>
176: 1011xxx1SS001yyy .......... 034 cmpm_S CMPM.S (Ay)+,(Ax)+
177: 1011xxxs11mmmrrr dam+-rxwpi 034 cmpa_S CMPA.S <ea>,Ax
178: 1100xxx0SSmmmrrr d.m+-rxwpi 034 and_S_ea_dn AND.S <ea>,Dx
179: 1100xxx011mmmrrr d.m+-rxwpi 034 mulu_w MULU.W <ea>,Dx
180: 1100xxx111mmmrrr d.m+-rxwpi 034 muls_w MULS.W <ea>,Dx
181: 1100xxx1SSmmmrrr ..m+-rxw.. 034 and_S_dn_ea AND.S Dx,<ea>
182: 1100xxx101000yyy .......... 034 exg_l_dn_dn EXG.L Dx,Dy
183: 1100xxx101001yyy .......... 034 exg_l_an_an EXG.L Ax,Ay
184: 1100xxx110001yyy .......... 034 exg_l_dn_an EXG.L Dx,Ay
185: 1100xxx100000yyy .......... 034 abcd_reg ABCD.B Dy,Dx
186: 1100xxx100001yyy .......... 034 abcd_mem ABCD.B -(Ay),-(Ax)
187: 1101xxx0SSmmmrrr dam+-rxwpi 034 add_S_ea_dn ADD.S <ea>,Dx
188: 1101xxx1SSmmmrrr ..m+-rxw.. 034 add_S_dn_ea ADD.S Dx,<ea>
189: 1101xxx1SS000yyy .......... 034 addx_S_reg ADDX.S Dy,Dx
190: 1101xxx1SS001yyy .......... 034 addx_S_mem ADDX.S -(Ay),-(Ax)
191: 1101xxxs11mmmrrr dam+-rxwpi 034 adda_S ADDA.S <ea>,Ax
192: 1110qqq0SS000yyy .......... 034 asr_S_imm ASR.S #qqq,Dy
193: 1110qqq0SS001yyy .......... 034 lsr_S_imm LSR.S #qqq,Dy
194: 1110qqq0SS010yyy .......... 034 roxr_S_imm ROXR.S #qqq,Dy
195: 1110qqq0SS011yyy .......... 034 ror_S_imm ROR.S #qqq,Dy
196: 1110xxx0SS100yyy .......... 034 asr_S_dn ASR.S Dx,Dy
197: 1110xxx0SS101yyy .......... 034 lsr_S_dn LSR.S Dx,Dy
198: 1110xxx0SS110yyy .......... 034 roxr_S_dn ROXR.S Dx,Dy
199: 1110xxx0SS111yyy .......... 034 ror_S_dn ROR.S Dx,Dy
200: 1110qqq1SS000yyy .......... 034 asl_S_imm ASL.S #qqq,Dy
201: 1110qqq1SS001yyy .......... 034 lsl_S_imm LSL.S #qqq,Dy
202: 1110qqq1SS010yyy .......... 034 roxl_S_imm ROXL.S #qqq,Dy
203: 1110qqq1SS011yyy .......... 034 rol_S_imm ROL.S #qqq,Dy
204: 1110xxx1SS100yyy .......... 034 asl_S_dn ASL.S Dx,Dy
205: 1110xxx1SS101yyy .......... 034 lsl_S_dn LSL.S Dx,Dy
206: 1110xxx1SS110yyy .......... 034 roxl_S_dn ROXL.S Dx,Dy
207: 1110xxx1SS111yyy .......... 034 rol_S_dn ROL.S Dx,Dy
208: 1110000011mmmrrr ..m+-rxw.. 034 asr_w ASR.W <ea>
209: 1110000111mmmrrr ..m+-rxw.. 034 asl_w ASL.W <ea>
210: 1110001011mmmrrr ..m+-rxw.. 034 lsr_w LSR.W <ea>
211: 1110001111mmmrrr ..m+-rxw.. 034 lsl_w LSL.W <ea>
212: 1110010011mmmrrr ..m+-rxw.. 034 roxr_w ROXR.W <ea>
213: 1110010111mmmrrr ..m+-rxw.. 034 roxl_w ROXL.W <ea>
214: 1110011011mmmrrr ..m+-rxw.. 034 ror_w ROR.W <ea>
215: 1110011111mmmrrr ..m+-rxw.. 034 rol_w ROL.W <ea>
216: 1110100011mmmrrr d.m..rxwp. -34 bftst BFTST <ea>{#o:#w}
217: 1110100111mmmrrr d.m..rxwp. -34 bfextu BFEXTU <ea>{#o:#w},Dn
218: 1110101011mmmrrr d.m..rxw.. -34 bfchg BFCHG <ea>{#o:#w}
219: 1110101111mmmrrr d.m..rxwp. -34 bfexts BFEXTS <ea>{#o:#w},Dn
220: 1110110011mmmrrr d.m..rxw.. -34 bfclr BFCLR <ea>{#o:#w}
221: 1110110111mmmrrr d.m..rxwp. -34 bfffo BFFFO <ea>{#o:#w},Dn
222: 1110111011mmmrrr d.m..rxw.. -34 bfset BFSET <ea>{#o:#w}
223: 1110111111mmmrrr d.m..rxw.. -34 bfins BFINS Dn,<ea>{#o:#w}
224:
1.1.1.5 root 225: ; F ラインは不当命令側で処理するのでこの表には不要。
226: ;1111nnnnnnnnnnnn .......... 034 fline F-Line
227:
1.1.1.7 ! root 228: 1111000nnnnnnnnn .......... -3- mmu30 MMU30_OP
1.1 root 229: 1111001000nnnnnn .......... -34 fpgen FPGEN
1.1.1.5 root 230: 1111001001mmmrrr d.m+-rxw.. -34 fxcc FScc.B <ea>
1.1 root 231: 1111001001001yyy .......... -34 fxcc FDBcc Dy,<label>
232: 1111001001111010 .......... -34 fxcc FTRAPcc.W #<imm>
233: 1111001001111011 .......... -34 fxcc FTRAPcc.L #<imm>
234: 1111001001111100 .......... -34 fxcc FTRAPcc
235: 1111001010nnnnnn .......... -34 fbcc_w FBcc.W <label>
236: 1111001011nnnnnn .......... -34 fbcc_l FBcc.L <label>
1.1.1.5 root 237: 1111001100mmmrrr ..m.-rxw.. -34 fsave FSAVE <ea>
238: 1111001101mmmrrr ..m+.rxw.. -34 frestore FRESTORE <ea>
239:
240: ; cpSAVE/RESTORE の CCC は cpID=3〜7 だけ展開してある。
241: ; cpID==2 は 040 の pflush/ptest のブロックと重なるためそちらに混ぜる。
242: 1111010100mmmrrr ..m.-rxw.. 23- pflush cpSAVE
243: 1111010101mmmrrr ..m+.rxwp. 23- ptest cpRESTORE
244: 1111CCC100mmmrrr ..m.-rxw.. 23- cpsave cpSAVE
245: 1111CCC101mmmrrr ..m+.rxwp. 23- cprestore cpRESTORE
1.1 root 246:
1.1.1.5 root 247: 11110100nn001yyy .......... --4 cinv CINVL <caches>,(Ay)
248: 11110100nn010yyy .......... --4 cinv CINVP <caches>,(Ay)
249: 11110100nn011000 .......... --4 cinv CINVA <caches>
250: 11110100nn101yyy .......... --4 cpush CPUSHL <caches>,(Ay)
251: 11110100nn110yyy .......... --4 cpush CPUSHP <caches>,(Ay)
252: 11110100nn111000 .......... --4 cpush CPUSHA <caches>
253: 1111010100000yyy .......... --4 pflush PFLUSHN (Ay)
1.1 root 254: 1111010100001yyy .......... --4 pflush PFLUSH (Ay)
1.1.1.5 root 255: 1111010100010000 .......... --4 pflush PFLUSHAN
256: 1111010100011000 .......... --4 pflush PFLUSHA
257: 1111010101001yyy .......... --4 ptest PTESTW (Ay)
258: 1111010101101yyy .......... --4 ptest PTESTR (Ay)
259: 1111011000000yyy .......... --4 move16 MOVE16 (Ay)+,xxx.L
260: 1111011000001yyy .......... --4 move16 MOVE16 xxx.L,(Ay)+
261: 1111011000010yyy .......... --4 move16 MOVE16 (Ay),xxx.L
262: 1111011000011yyy .......... --4 move16 MOVE16 xxx.L,(Ay)
263: 1111011000100yyy .......... --4 move16 MOVE16 (Ay)+,(An)+
1.1.1.6 root 264:
265: 1111100000000000 .......... --6 lpstop LPSTOP
266: 1111010110001nnn .......... --6 plpa PLPAW (An)
267: 1111010111001nnn .......... --6 plpa PLPAR (An)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.