1988-08-18 14:33:57 +00:00
|
|
|
add_l src:QUICK, dst ==> code_instr( 0x5, src->val, 0x2, dst).
|
|
|
|
... src:IMMEDIATE, dst:A_REG ==> @if ( small( %$(src->expr)))
|
|
|
|
@text2( 0x5088 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%$(src->expr) & 0x7) << 9)).
|
|
|
|
@else
|
|
|
|
code_instr( 0xd, dst->reg, 0x7, src).
|
|
|
|
@fi.
|
|
|
|
... src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x3, 0x2, dst);
|
|
|
|
code_extension( src);
|
|
|
|
code_extension( dst).
|
|
|
|
... src, dst:D_REG ==> code_instr( 0xd, dst->reg, 0x6, src).
|
|
|
|
... src, dst:A_REG ==> code_instr( 0xd, dst->reg, 0x7, src).
|
|
|
|
... src:D_REG, dst ==> code_instr( 0xd, src->reg, 0x6, dst).
|
|
|
|
|
|
|
|
and_l src:QUICK, dst ==> code_opcode( 0x0, 0x1, 0x2, dst);
|
|
|
|
code_extension( src);
|
|
|
|
code_extension( dst).
|
|
|
|
... src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x1, 0x2, dst);
|
|
|
|
code_extension( src);
|
|
|
|
code_extension( dst).
|
|
|
|
... src:D_REG, dst ==> code_instr( 0xc, src->reg, 0x6, dst).
|
|
|
|
|
|
|
|
asl_l cnt:D_REG, dst:D_REG ==> @text2( %d( 0xe1a0 | (cnt->reg << 9) |
|
|
|
|
dst->reg)).
|
|
|
|
|
|
|
|
asr_l cnt:QUICK, dst:D_REG ==> @text2( %d( 0xe080 | (cnt->val << 9) |
|
|
|
|
dst->reg)).
|
|
|
|
... cnt:D_REG, dst:D_REG ==> @text2( %d( 0xe0a0 | (cnt->reg << 9) |
|
|
|
|
dst->reg)).
|
|
|
|
|
1989-10-26 15:42:30 +00:00
|
|
|
bcc dst:LOC_LBL ==> @text1(0x64);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x64ff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bcs dst:LOC_LBL ==> @text1( 0x65);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x65ff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
beq dst:LOC_LBL ==> @text1( 0x67);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x67ff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bge dst:LOC_LBL ==> @text1( 0x6c);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x6cff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bgt dst:LOC_LBL ==> @text1( 0x6e);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x6eff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
ble dst:LOC_LBL ==> @text1( 0x6f);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x6fff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bls dst:LOC_LBL ==> @text1( 0x63);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x63ff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
blt dst:LOC_LBL ==> @text1( 0x6d);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x6dff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bmi dst:LOC_LBL ==> @text1( 0x6b);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x6bff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bne dst:LOC_LBL ==> @text1( 0x66);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x66ff);
|
|
|
|
code_dist4( dst).
|
1989-10-26 15:42:30 +00:00
|
|
|
bra dst:LOC_LBL ==> @text1( 0x60);
|
|
|
|
@text1(%dist( dst->lbl)).
|
1988-08-18 14:33:57 +00:00
|
|
|
... dst:GLOB_LBL ==> @text2( 0x60ff);
|
|
|
|
code_dist4( dst).
|
|
|
|
|
|
|
|
bset nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x7, dst).
|
|
|
|
|
|
|
|
btst nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x4, dst).
|
|
|
|
|
1989-10-26 15:42:30 +00:00
|
|
|
bchg nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x5, dst).
|
|
|
|
|
1988-08-18 14:33:57 +00:00
|
|
|
clr_l dst ==> code_instr( 0x4, 0x1, 0x2, dst).
|
|
|
|
|
|
|
|
cmp_l src:INCR, dst:INCR ==> @text2( 0xb188 | %d( src->reg << 9) |
|
|
|
|
%d( dst->reg)).
|
|
|
|
... src, dst:D_REG ==> code_instr( 0xb, dst->reg, 0x2, src).
|
|
|
|
|
|
|
|
cmp2_l src, reg:D_REG ==> code_opcode( 0x0, 0x2, 0x3, src);
|
|
|
|
@text2( (%d(reg->reg) & 0x7) << 12);
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
dbf reg:D_REG, dst:LOC_LBL ==> @text2( 0x51c8 | (%d(reg->reg) & 0x7));
|
|
|
|
@text2( %dist(dst->lbl) + 2).
|
|
|
|
|
|
|
|
divs_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x1, src);
|
|
|
|
@text2( 0x800 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(dst->reg) & 0x7) << 12));
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
divsl_l src, dst:REG_PAIR ==> code_opcode( 0x4, 0x6, 0x1, src);
|
|
|
|
@text2( 0x800 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(dst->reg2) & 0x7) << 12));
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
divu_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x1, src);
|
|
|
|
@text2( (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(dst->reg) & 0x7) << 12));
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
divul_l src, dst:REG_PAIR ==> code_opcode( 0x4, 0x6, 0x1, src);
|
|
|
|
@text2( (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(dst->reg2) & 0x7) << 12));
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
eor_l src:D_REG, dst ==> code_instr( 0xb, src->reg, 0x6, dst).
|
|
|
|
|
|
|
|
ext_w dst:D_REG ==> @text2( 0x4880 | (%d(dst->reg) & 0x7)).
|
|
|
|
|
|
|
|
ext_l dst:D_REG ==> @text2( 0x48c0 | (%d(dst->reg) & 0x7)).
|
|
|
|
|
|
|
|
extl_l dst:D_REG ==> @text2( 0x49c0 | (%d(dst->reg) & 0x7)).
|
|
|
|
|
|
|
|
jmp dst ==> code_instr( 0x4, 0x7, 0x3, dst).
|
|
|
|
|
|
|
|
jsr dst ==> code_instr( 0x4, 0x7, 0x2, dst).
|
|
|
|
|
|
|
|
lea src, dst:A_REG ==> code_instr( 0x4, dst->reg, 0x7, src).
|
|
|
|
|
1989-11-15 17:46:25 +00:00
|
|
|
link reg:A_REG, displ:IMMEDIATE ==> @text2( 0x4808 | %d(reg->reg));
|
|
|
|
@text4( %$(displ->expr)).
|
1988-08-18 14:33:57 +00:00
|
|
|
|
|
|
|
lsr_l cnt:D_REG, dst:D_REG ==> @text2( 0xe0a8 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(cnt->reg) & 0x7) << 9)).
|
|
|
|
|
|
|
|
move_b src, dst ==> code_move( 0x1, src, dst).
|
|
|
|
|
|
|
|
move_l src, dst:A_REG ==> code_instr( 0x2, dst->reg, 0x1, src).
|
|
|
|
... src, dst ==> code_move( 0x2, src, dst).
|
|
|
|
|
|
|
|
move_w src, dst ==> code_move( 0x3, src, dst).
|
|
|
|
|
|
|
|
muls_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x0, src);
|
|
|
|
@text2( 0x800 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(dst->reg) & 0x7) << 12));
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
mulu_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x0, src);
|
|
|
|
@text2( (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(dst->reg) & 0x7) << 12));
|
|
|
|
code_extension( src).
|
|
|
|
|
|
|
|
neg_l dst ==> code_instr( 0x4, 0x2, 0x2, dst).
|
|
|
|
|
|
|
|
not_l dst ==> code_instr( 0x4, 0x3, 0x2, dst).
|
|
|
|
|
|
|
|
or_l src:D_REG, dst ==> code_instr( 0x8, src->reg, 0x6, dst).
|
|
|
|
|
|
|
|
pea src ==> code_instr( 0x4, 0x4, 0x1, src).
|
|
|
|
|
|
|
|
rol_l cnt:D_REG, dst:D_REG ==> @text2( 0xe1b8 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(cnt->reg) & 0x7) << 9)).
|
|
|
|
|
|
|
|
ror_l cnt:D_REG, dst:D_REG ==> @text2( 0xe0b8 | (%d(dst->reg) & 0x7) |
|
|
|
|
((%d(cnt->reg) & 0x7) << 9)).
|
|
|
|
|
|
|
|
rts ==> @text2( 0x4e75).
|
|
|
|
|
|
|
|
sne dst ==> code_instr( 0x5, 0x3, 0x3, dst).
|
|
|
|
|
|
|
|
sub_l src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x2, 0x2, dst);
|
|
|
|
code_extension( src);
|
|
|
|
code_extension( dst).
|
|
|
|
... src:QUICK, dst ==> code_instr( 0x5, src->val, 0x6, dst).
|
|
|
|
... src:D_REG, dst ==> code_instr( 0x9, src->reg, 0x6, dst).
|
|
|
|
|
|
|
|
tst_l dst ==> code_instr( 0x4, 0x5, 0x2, dst).
|
|
|
|
|
|
|
|
unlk reg:A_REG ==> @text2( 0x4e58 | %d(reg->reg)).
|