ack/mach/sun3/ce/as_table

179 lines
5.9 KiB
Plaintext

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)).
bcc dst:LOC_LBL ==> @text1(0x64);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x64ff);
code_dist4( dst).
bcs dst:LOC_LBL ==> @text1( 0x65);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x65ff);
code_dist4( dst).
beq dst:LOC_LBL ==> @text1( 0x67);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x67ff);
code_dist4( dst).
bge dst:LOC_LBL ==> @text1( 0x6c);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x6cff);
code_dist4( dst).
bgt dst:LOC_LBL ==> @text1( 0x6e);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x6eff);
code_dist4( dst).
ble dst:LOC_LBL ==> @text1( 0x6f);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x6fff);
code_dist4( dst).
bls dst:LOC_LBL ==> @text1( 0x63);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x63ff);
code_dist4( dst).
blt dst:LOC_LBL ==> @text1( 0x6d);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x6dff);
code_dist4( dst).
bmi dst:LOC_LBL ==> @text1( 0x6b);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x6bff);
code_dist4( dst).
bne dst:LOC_LBL ==> @text1( 0x66);
@text1(%dist( dst->lbl)).
... dst:GLOB_LBL ==> @text2( 0x66ff);
code_dist4( dst).
bra dst:LOC_LBL ==> @text1( 0x60);
@text1(%dist( dst->lbl)).
... 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).
bchg nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x5, dst).
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).
link reg:A_REG, displ:IMMEDIATE ==> @text2( 0x4e50 | %d(reg->reg));
@text2( %$(displ->expr)).
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)).