444 lines
32 KiB
Text
444 lines
32 KiB
Text
%u4_load_s16 52:4 !function=u4_load_s16
|
|
%load_u16 !function=load_u16
|
|
|
|
%addr_abs20 32:20 !function=reloc_abs20
|
|
%addr_disp24 32:4 40:4 16:16
|
|
|
|
### Moves ###
|
|
|
|
&mov_imm rd imm width
|
|
&mov_reg rd rs width
|
|
|
|
@mov_imm4 .... .... .... rd:4 imm=%u4_load_s16 &mov_imm
|
|
@mov_imm32 .... .... .... rd:4 imm:32 &mov_imm
|
|
@mov_imm20 .... .... rd:4 imm:20 &mov_imm
|
|
@mov_reg .... .... rs:4 rd:4 &mov_reg
|
|
@mov_d_xz .... .... rs:4 rd:4
|
|
|
|
MOV_imm 0101 1000 .... .... @mov_imm4 width=1
|
|
MOV_reg 0101 1001 .... .... @mov_reg width=1
|
|
MOV_imm 0000 0101 .... .... .... .... .... .... @mov_imm20 width=4
|
|
MOV_imm 0000 0000 0111 .... .... .... .... .... .... .... .... .... @mov_imm32 width=4
|
|
MOV_imm 0101 0100 .... .... @mov_imm4 width=4
|
|
MOVD_reg 0101 0101 .... .... @mov_d_xz
|
|
MOV_imm 0101 1010 .... .... @mov_imm4 width=2
|
|
MOV_reg 0101 1011 .... .... @mov_reg width=2
|
|
MOVXB 0101 1100 .... .... @mov_d_xz
|
|
MOVXW 0101 1110 .... .... @mov_d_xz
|
|
MOVZB 0101 1101 .... .... @mov_d_xz
|
|
MOVZW 0101 1111 .... .... @mov_d_xz
|
|
|
|
|
|
### Integer Arithmetic ###
|
|
|
|
&arith_imm rd imm add_carry width
|
|
&arith_reg rd rs add_carry width
|
|
&mul_imm rd imm width
|
|
|
|
@arith_imm .... .... .... rd:4 imm=%u4_load_s16 &arith_imm
|
|
@arith_imm_todo .... .... .... rd:4 imm=%u4_load_s16
|
|
@arith_imm20 .... .... rd:4 imm:20
|
|
@arith_imm32 .... .... .... rd:4 imm:s32
|
|
@arith_reg .... .... rs:4 rd:4 &arith_reg
|
|
@addd_rp .... .... rs:4 rd:4
|
|
@subd_rp .... .... .... .... .... .... rs:4 rd:4
|
|
@mul_imm .... .... .... rd:4 imm=%u4_load_s16 &mul_imm
|
|
@mul_reg .... .... rs:4 rd:4
|
|
@mac .... .... .... .... .... rd:4 rs1:4 rs2:4
|
|
|
|
ADD_imm 0011 0000 .... .... @arith_imm width=1 add_carry=0
|
|
ADD_reg 0011 0001 .... .... @arith_reg width=1 add_carry=0
|
|
ADD_imm 0011 0100 .... .... @arith_imm width=1 add_carry=1
|
|
ADD_reg 0011 0101 .... .... @arith_reg width=1 add_carry=1
|
|
ADD_imm 0011 0110 .... .... @arith_imm width=2 add_carry=1
|
|
ADD_reg 0011 0111 .... .... @arith_reg width=2 add_carry=1
|
|
ADDD_imm 0000 0100 .... .... .... .... .... .... @arith_imm20
|
|
ADDD_imm 0000 0000 0010 .... .... .... .... .... .... .... .... .... @arith_imm32
|
|
ADDD_imm 0110 0000 .... .... @arith_imm_todo
|
|
ADDD_rp 0110 0001 .... .... @addd_rp
|
|
ADDU_imm 0010 1100 .... .... @arith_imm width=1 add_carry=0
|
|
ADDU_reg 0010 1101 .... .... @arith_reg width=1 add_carry=0
|
|
ADDU_imm 0010 1110 .... .... @arith_imm width=2 add_carry=0
|
|
ADDU_reg 0010 1111 .... .... @arith_reg width=2 add_carry=0
|
|
ADD_imm 0011 0010 .... .... @arith_imm width=2 add_carry=0
|
|
ADD_reg 0011 0011 .... .... @arith_reg width=2 add_carry=0
|
|
SUB_imm 0011 1000 .... .... @arith_imm width=1 add_carry=0
|
|
SUB_reg 0011 1001 .... .... @arith_reg width=1 add_carry=0
|
|
SUB_imm 0011 1100 .... .... @arith_imm width=1 add_carry=1
|
|
SUB_reg 0011 1101 .... .... @arith_reg width=1 add_carry=1
|
|
SUB_imm 0011 1110 .... .... @arith_imm width=2 add_carry=1
|
|
SUB_reg 0011 1111 .... .... @arith_reg width=2 add_carry=1
|
|
SUBD_rp 0000 0000 0001 0100 1100 0000 .... .... @subd_rp
|
|
SUBD_imm 0000 0000 0011 .... .... .... .... .... .... .... .... .... @arith_imm32
|
|
SUB_imm 0011 1010 .... .... @arith_imm width=2 add_carry=0
|
|
SUB_reg 0011 1011 .... .... @arith_reg width=2 add_carry=0
|
|
MUL_imm 0110 0100 .... .... @mul_imm width=1
|
|
MULB_reg 0110 0101 .... .... @mul_reg
|
|
MULSB_reg 0000 1011 .... .... @mul_reg
|
|
MULSW_reg 0110 0010 .... .... @mul_reg
|
|
MULUW_reg 0110 0011 .... .... @mul_reg
|
|
MUL_imm 0110 0110 .... .... @mul_imm width=2
|
|
MULW_reg 0110 0111 .... .... @mul_reg
|
|
MACQW 0000 0000 0001 0100 1101 .... .... .... @mac
|
|
MACUW 0000 0000 0001 0100 1110 .... .... .... @mac
|
|
MACSW 0000 0000 0001 0100 1111 .... .... .... @mac
|
|
|
|
|
|
### Integer Comparison
|
|
&cmp_imm rs imm width
|
|
&cmp_reg rs1 rs2 width
|
|
|
|
@cmp_imm .... .... .... rs:4 &cmp_imm imm=%u4_load_s16
|
|
@cmp_reg .... .... rs2:4 rs1:4 &cmp_reg
|
|
@cmp_imm32 .... .... .... rs:4 imm:s32 &cmp_imm
|
|
@cmpd_reg .... .... rs2:4 rs1:4
|
|
|
|
CMP_imm 0101 0000 .... .... @cmp_imm width=1
|
|
CMP_reg 0101 0001 .... .... @cmp_reg width=1
|
|
CMP_imm 0101 0010 .... .... @cmp_imm width=2
|
|
CMP_reg 0101 0011 .... .... @cmp_reg width=2
|
|
CMP_imm 0000 0000 1001 .... .... .... .... .... .... .... .... .... @cmp_imm32 width=4
|
|
CMP_imm 0101 0110 .... .... @cmp_imm width=4
|
|
CMPD_reg 0101 0111 .... .... @cmpd_reg
|
|
|
|
|
|
### Logical and Boolean
|
|
&logical_imm rd imm width
|
|
&logical_reg rd rs width
|
|
|
|
@logical_imm .... .... .... rd:4 imm=%u4_load_s16 &logical_imm
|
|
@logical_reg .... .... rs:4 rd:4 &logical_reg
|
|
@logical_dword_rp .... .... .... .... .... .... rs:4 rd:4
|
|
|
|
AND_imm 0010 0000 .... .... @logical_imm width=1
|
|
AND_reg 0010 0001 .... .... @logical_reg width=1
|
|
AND_imm 0010 0010 .... .... @logical_imm width=2
|
|
AND_reg 0010 0011 .... .... @logical_reg width=2
|
|
ANDD_imm 0000 0000 0100 .... .... .... .... .... .... .... .... .... @arith_imm32
|
|
ANDD_rp 0000 0000 0001 0100 1011 ---- .... .... @logical_dword_rp
|
|
OR_imm 0010 0100 .... .... @logical_imm width=1
|
|
OR_reg 0010 0101 .... .... @logical_reg width=1
|
|
OR_imm 0010 0110 .... .... @logical_imm width=2
|
|
OR_reg 0010 0111 .... .... @logical_reg width=2
|
|
ORD_imm 0000 0000 0101 .... .... .... .... .... .... .... .... .... @arith_imm32
|
|
ORD_rp 0000 0000 0001 0100 1001 ---- .... .... @logical_dword_rp
|
|
XOR_imm 0010 1000 .... .... @logical_imm width=1
|
|
XOR_reg 0010 1001 .... .... @logical_reg width=1
|
|
XOR_imm 0010 1010 .... .... @logical_imm width=2
|
|
XOR_reg 0010 1011 .... .... @logical_reg width=2
|
|
XORD_imm 0000 0000 0110 .... .... .... .... .... .... .... .... .... @arith_imm32
|
|
XORD_rp 0000 0000 0001 0100 1010 ---- .... .... @logical_dword_rp
|
|
SCOND 0000 1000 imm:4 rd:4
|
|
|
|
|
|
### Shifts
|
|
&shift_imm rd imm width
|
|
&shift_reg rd rc width
|
|
|
|
@shift_imm3 .... .... . imm:3 rd:4 &shift_imm
|
|
@shift_imm4 .... .... imm:4 rd:4 &shift_imm
|
|
@shift_reg .... .... rc:4 rd:4 &shift_reg
|
|
@shiftd_rp .... .... rc:4 rd:4
|
|
@shiftd_imm .... ... imm:5 rd:4
|
|
|
|
ASHU_imm_l 0100 0000 0... .... @shift_imm3 width=1
|
|
ASHU_imm_r 0100 0000 1... .... @shift_imm3 width=1
|
|
ASHU_reg 0100 0001 .... .... @shift_reg width=1
|
|
ASHU_imm_l 0100 0010 .... .... @shift_imm4 width=2
|
|
ASHU_imm_r 0100 0011 .... .... @shift_imm4 width=2
|
|
ASHU_reg 0100 0101 .... .... @shift_reg width=2
|
|
ASHUD_imm_l 0100 110. .... .... @shiftd_imm
|
|
ASHUD_imm_r 0100 111. .... .... @shiftd_imm
|
|
ASHUD_rp 0100 1000 .... .... @shiftd_rp
|
|
LSH_imm_r 0000 1001 1... .... @shift_imm3 width=1
|
|
LSH_reg 0100 0100 .... .... @shift_reg width=1
|
|
LSH_imm_r 0100 1001 .... .... @shift_imm4 width=2
|
|
LSH_reg 0100 0110 .... .... @shift_reg width=2
|
|
LSHD_imm_r 0100 101. .... .... @shiftd_imm
|
|
LSHD_rp 0100 0111 .... .... @shiftd_rp
|
|
|
|
|
|
### Bit operations ###
|
|
|
|
&xbit_reg ra pos dbase disp width
|
|
&xbit_rrp rrp pos disp width
|
|
&xbit_abs addr pos width
|
|
|
|
%xbit_disp14 40:6 46:2 52:2 32:4
|
|
%xbit_disp20 40:4 16:s16
|
|
|
|
@xbit_disp14_rrp .... .... .... rrp:4 .... .... pos:4 .... disp=%xbit_disp14 &xbit_rrp
|
|
@xbit_disp20_reg .... .... .... .... .... .... pos:4 ra:4 .... .... .... .... disp=%xbit_disp20 &xbit_reg
|
|
@xbit_disp20_rrp .... .... .... .... .... .... pos:4 rrp:4 .... .... .... .... disp=%xbit_disp20 &xbit_rrp
|
|
@xbitb_disp0_rp .... .... . pos:3 ra:4 &xbit_reg
|
|
@xbitw_disp0_rp .... .... pos:4 ra:4 &xbit_reg
|
|
@xbitb_disp16_reg .... .... . pos:3 ra:4 disp:s16 &xbit_reg
|
|
@xbitw_disp16_reg .... .... pos:4 ra:4 disp:s16 &xbit_reg
|
|
@xbitb_abs20 .... .... . pos:3 .... .... .... .... .... addr=%addr_abs20 &xbit_abs
|
|
@xbitw_abs20 .... .... pos:4 .... .... .... .... .... addr=%addr_abs20 &xbit_abs
|
|
@xbitb_abs20_rel .... .... . pos:3 .... .... .... .... .... disp=%addr_abs20 &xbit_reg
|
|
@xbitw_abs20_rel .... .... pos:4 .... .... .... .... .... disp=%addr_abs20 &xbit_reg
|
|
@xbit_abs24 .... .... .... .... .... .... pos:4 .... .... .... .... .... addr=%addr_disp24 &xbit_abs
|
|
|
|
CBIT_rrp 0110 1010 10.. .... .... .... .... .... width=1 @xbit_disp14_rrp
|
|
CBIT_reg 0000 0000 0001 0000 0100 .... .... .... .... .... .... .... width=1 dbase=0 @xbit_disp20_reg
|
|
CBIT_reg 0110 1010 0... .... width=1 dbase=1 disp=0 @xbitb_disp0_rp
|
|
CBIT_reg 0110 1011 0... .... .... .... .... .... width=1 dbase=1 @xbitb_disp16_reg
|
|
CBIT_reg 0000 0000 0001 0000 0101 .... .... .... .... .... .... .... width=1 dbase=1 @xbit_disp20_reg
|
|
CBIT_rrp 0000 0000 0001 0000 0110 .... .... .... .... .... .... .... width=1 @xbit_disp20_rrp
|
|
CBIT_abs 0110 1011 1... .... .... .... .... .... width=1 @xbitb_abs20
|
|
CBIT_reg 0110 1000 0... .... .... .... .... .... width=1 dbase=1 ra=12 @xbitb_abs20_rel
|
|
CBIT_reg 0110 1000 1... .... .... .... .... .... width=1 dbase=1 ra=13 @xbitb_abs20_rel
|
|
CBIT_abs 0000 0000 0001 0000 0111 .... .... .... .... .... .... .... width=1 @xbit_abs24
|
|
CBIT_rrp 0110 1010 11.. .... .... .... .... .... width=2 @xbit_disp14_rrp
|
|
CBIT_reg 0000 0000 0001 0001 0100 .... .... .... .... .... .... .... width=2 dbase=0 @xbit_disp20_reg
|
|
CBIT_reg 0110 1110 .... .... width=2 dbase=1 disp=0 @xbitw_disp0_rp
|
|
CBIT_reg 0110 1001 .... .... .... .... .... .... width=2 dbase=1 @xbitw_disp16_reg
|
|
CBIT_reg 0000 0000 0001 0001 0101 .... .... .... .... .... .... .... width=2 dbase=1 @xbit_disp20_reg
|
|
CBIT_rrp 0000 0000 0001 0001 0110 .... .... .... .... .... .... .... width=2 @xbit_disp20_rrp
|
|
CBIT_abs 0110 1111 .... .... .... .... .... .... width=2 @xbitw_abs20
|
|
CBIT_reg 0110 1100 .... .... .... .... .... .... width=2 dbase=1 ra=12 @xbitw_abs20_rel
|
|
CBIT_reg 0110 1101 .... .... .... .... .... .... width=2 dbase=1 ra=13 @xbitw_abs20_rel
|
|
CBIT_abs 0000 0000 0001 0001 0111 .... .... .... .... .... .... .... width=2 @xbit_abs24
|
|
|
|
SBIT_rrp 0111 0010 10.. .... .... .... .... .... width=1 @xbit_disp14_rrp
|
|
SBIT_reg 0000 0000 0001 0000 1000 .... .... .... .... .... .... .... width=1 dbase=0 @xbit_disp20_reg
|
|
SBIT_reg 0111 0010 0... .... width=1 dbase=1 disp=0 @xbitb_disp0_rp
|
|
SBIT_reg 0111 0011 0... .... .... .... .... .... width=1 dbase=1 @xbitb_disp16_reg
|
|
SBIT_reg 0000 0000 0001 0000 1001 .... .... .... .... .... .... .... width=1 dbase=1 @xbit_disp20_reg
|
|
SBIT_rrp 0000 0000 0001 0000 1010 .... .... .... .... .... .... .... width=1 @xbit_disp20_rrp
|
|
SBIT_abs 0111 0011 1... .... .... .... .... .... width=1 @xbitb_abs20
|
|
SBIT_reg 0111 0000 0... .... .... .... .... .... width=1 dbase=1 ra=12 @xbitb_abs20_rel
|
|
SBIT_reg 0111 0000 1... .... .... .... .... .... width=1 dbase=1 ra=13 @xbitb_abs20_rel
|
|
SBIT_abs 0000 0000 0001 0000 1011 .... .... .... .... .... .... .... width=1 @xbit_abs24
|
|
SBIT_rrp 0111 0010 11.. .... .... .... .... .... width=2 @xbit_disp14_rrp
|
|
SBIT_reg 0000 0000 0001 0001 1000 .... .... .... .... .... .... .... width=2 dbase=0 @xbit_disp20_reg
|
|
SBIT_reg 0111 0110 .... .... width=2 dbase=1 disp=0 @xbitw_disp0_rp
|
|
SBIT_reg 0111 0001 .... .... .... .... .... .... width=2 dbase=1 @xbitw_disp16_reg
|
|
SBIT_reg 0000 0000 0001 0001 1001 .... .... .... .... .... .... .... width=2 dbase=1 @xbit_disp20_reg
|
|
SBIT_rrp 0000 0000 0001 0001 1010 .... .... .... .... .... .... .... width=2 @xbit_disp20_rrp
|
|
SBIT_abs 0111 0111 .... .... .... .... .... .... width=2 @xbitw_abs20
|
|
SBIT_reg 0111 0100 .... .... .... .... .... .... width=2 dbase=1 ra=12 @xbitw_abs20_rel
|
|
SBIT_reg 0111 0101 .... .... .... .... .... .... width=2 dbase=1 ra=13 @xbitw_abs20_rel
|
|
SBIT_abs 0000 0000 0001 0001 1011 .... .... .... .... .... .... .... width=2 @xbit_abs24
|
|
|
|
TBIT_reg_imm 0000 0110 pos:4 rs:4
|
|
TBIT_reg_reg 0000 0111 rp:4 rs:4
|
|
|
|
TBIT_mem_rrp 0111 1010 10.. .... .... .... .... .... width=1 @xbit_disp14_rrp
|
|
TBIT_mem_reg 0000 0000 0001 0000 1100 .... .... .... .... .... .... .... width=1 dbase=0 @xbit_disp20_reg
|
|
TBIT_mem_reg 0111 1010 0... .... width=1 dbase=1 disp=0 @xbitb_disp0_rp
|
|
TBIT_mem_reg 0111 1011 0... .... .... .... .... .... width=1 dbase=1 @xbitb_disp16_reg
|
|
TBIT_mem_reg 0000 0000 0001 0000 1101 .... .... .... .... .... .... .... width=1 dbase=1 @xbit_disp20_reg
|
|
TBIT_mem_rrp 0000 0000 0001 0000 1110 .... .... .... .... .... .... .... width=1 @xbit_disp20_rrp
|
|
TBIT_mem_abs 0111 1011 1... .... .... .... .... .... width=1 @xbitb_abs20
|
|
TBIT_mem_reg 0111 1000 0... .... .... .... .... .... width=1 dbase=1 ra=12 @xbitb_abs20_rel
|
|
TBIT_mem_reg 0111 1000 1... .... .... .... .... .... width=1 dbase=1 ra=13 @xbitb_abs20_rel
|
|
TBIT_mem_abs 0000 0000 0001 0000 1111 .... .... .... .... .... .... .... width=1 @xbit_abs24
|
|
TBIT_mem_rrp 0111 1010 11.. .... .... .... .... .... width=2 @xbit_disp14_rrp
|
|
TBIT_mem_reg 0000 0000 0001 0001 1100 .... .... .... .... .... .... .... width=2 dbase=0 @xbit_disp20_reg
|
|
TBIT_mem_reg 0111 1110 .... .... width=2 dbase=1 disp=0 @xbitw_disp0_rp
|
|
TBIT_mem_reg 0111 1001 .... .... .... .... .... .... width=2 dbase=1 @xbitw_disp16_reg
|
|
TBIT_mem_reg 0000 0000 0001 0001 1101 .... .... .... .... .... .... .... width=2 dbase=1 @xbit_disp20_reg
|
|
TBIT_mem_rrp 0000 0000 0001 0001 1110 .... .... .... .... .... .... .... width=2 @xbit_disp20_rrp
|
|
TBIT_mem_abs 0111 1111 .... .... .... .... .... .... width=2 @xbitw_abs20
|
|
TBIT_mem_reg 0111 1100 .... .... .... .... .... .... width=2 dbase=1 ra=12 @xbitw_abs20_rel
|
|
TBIT_mem_reg 0111 1101 .... .... .... .... .... .... width=2 dbase=1 ra=13 @xbitw_abs20_rel
|
|
TBIT_mem_abs 0000 0000 0001 0001 1111 .... .... .... .... .... .... .... width=2 @xbit_abs24
|
|
|
|
|
|
### Jumps and Linkeage ###
|
|
|
|
%br_disp8 56:s4 48:4 !function=disp8_get_dest
|
|
|
|
BRCOND 0001 .... cond:4 .... dest=%br_disp8
|
|
|
|
JCOND 0000 1010 cond:4 ra:4
|
|
|
|
EXCP 0000 0000 1100 id:4
|
|
|
|
&bal dest
|
|
|
|
@bal .... .... dest:23 . &bal
|
|
#@bal_3a .... .... .... .... .... p1_1916:4 p2:4 p1_2320:4 p1_1501:15 .
|
|
|
|
BAL_ra 1100 0000 .... .... .... .... .... ...- @bal # fmt 5
|
|
#BAL_rp 0000 0000 1000 0000 0010 .... .... .... .... .... .... .... @bal_3a # fmt 3a
|
|
|
|
&pop rt ra count dest
|
|
@pop .... ... rt:1 ra:1 count:3 dest:4 &pop
|
|
&push ra count src
|
|
@push .... .... ra:1 count:3 src:4 &push
|
|
|
|
pop 0000 001. .... .... @pop # fmt 14, includes popret via rt bit
|
|
push 0000 0001 .... .... @push # fmt 14
|
|
|
|
### Load and Store ###
|
|
|
|
&load rd ra dbase disp width
|
|
&load_rrp rd rrp disp width
|
|
&load_abs rd addr width
|
|
&load_ind_abs rd ri addr width
|
|
|
|
%load_disp20 40:4 16:s16
|
|
%load_disp14 40:6 46:2 52:2 32:4
|
|
%load_disp4 56:4
|
|
%load_disp4_shift 56:4 !function=get_disp4
|
|
|
|
@load_disp16_reg .... .... rd:4 ra:4 &load
|
|
@load_disp20_reg .... .... .... .... .... .... rd:4 ra:4 .... .... .... .... disp=%load_disp20 &load
|
|
@load_disp20_rrp .... .... .... .... .... .... rd:4 rrp:4 .... .... .... .... disp=%load_disp20 &load_rrp
|
|
@load_disp20_rp .... .... .... .... .... .... rd:4 ra:4 .... .... .... .... disp=%load_disp20 &load
|
|
@load_abs20 .... .... rd:4 .... .... .... .... .... addr=%addr_abs20 &load_abs
|
|
@load_ind_abs .... ... ri:1 rd:4 addr:20 &load_ind_abs
|
|
@load_disp4_reg .... .... rd:4 ra:4 &load
|
|
@load_abs24 .... .... .... .... .... .... rd:4 .... .... .... .... .... addr=%addr_disp24 &load_abs
|
|
#@load_disp14_rrp .... .... .... rrp:4 .... .... rd:4 .... disp=%load_disp14 &load_rrp
|
|
|
|
{
|
|
LOAD_rrp 1011 1110 rd:4 rrp:4 width=1 disp=0 &load_rrp
|
|
LOAD 1011 1111 .... .... @load_disp16_reg width=1 dbase=1 disp=%load_u16
|
|
LOAD 1011 .... .... .... @load_disp4_reg width=1 dbase=1 disp=%load_disp4
|
|
}
|
|
UNIMPLEMENTED 1000 0110 01-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
|
LOAD 0000 0000 0001 0010 0100 .... .... .... .... .... .... .... width=1 dbase=0 @load_disp20_reg
|
|
LOAD 0000 0000 0001 1000 0100 .... .... .... .... .... .... .... width=1 dbase=0 @load_disp20_reg
|
|
LOAD 0000 0000 0001 0010 0101 .... .... .... .... .... .... .... width=1 dbase=1 @load_disp20_reg
|
|
LOAD 0000 0000 0001 1000 0101 .... .... .... .... .... .... .... width=1 dbase=1 @load_disp20_reg
|
|
LOAD_rrp 0000 0000 0001 0010 0110 .... .... .... .... .... .... .... width=1 @load_disp20_rrp
|
|
LOAD_abs 1000 1000 .... .... .... .... .... .... width=1 @load_abs20
|
|
LOAD_ind_abs 1000 101. .... .... .... .... .... .... width=1 @load_ind_abs
|
|
LOAD_abs 0000 0000 0001 0010 0111 .... .... .... .... .... .... .... width=1 @load_abs24
|
|
{
|
|
LOAD_rrp 1001 1110 rd:4 rrp:4 width=2 disp=0 &load_rrp
|
|
LOAD 1001 1111 .... .... @load_disp16_reg width=2 dbase=1 disp=%load_u16
|
|
LOAD 1001 .... .... .... @load_disp4_reg width=2 dbase=1 disp=%load_disp4_shift
|
|
}
|
|
UNIMPLEMENTED 1000 0110 11-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
|
LOAD 0000 0000 0001 0010 1100 .... .... .... .... .... .... .... width=2 dbase=0 @load_disp20_reg
|
|
LOAD 0000 0000 0001 1000 1100 .... .... .... .... .... .... .... width=2 dbase=0 @load_disp20_reg
|
|
LOAD 0000 0000 0001 0010 1101 .... .... .... .... .... .... .... width=2 dbase=1 @load_disp20_reg
|
|
LOAD 0000 0000 0001 1000 1101 .... .... .... .... .... .... .... width=2 dbase=1 @load_disp20_reg
|
|
LOAD_rrp 0000 0000 0001 0010 1110 .... .... .... .... .... .... .... width=2 @load_disp20_rrp
|
|
LOAD_abs 1000 1001 .... .... .... .... .... .... width=2 @load_abs20
|
|
LOAD_ind_abs 1000 111. .... .... .... .... .... .... width=2 @load_ind_abs
|
|
LOAD_abs 0000 0000 0001 0010 1111 .... .... .... .... .... .... .... width=2 @load_abs24
|
|
{
|
|
LOAD_rrp 1010 1110 rd:4 rrp:4 width=4 disp=0 &load_rrp
|
|
LOAD 1010 1111 .... .... @load_disp16_reg width=4 dbase=1 disp=%load_u16
|
|
LOAD 1010 .... .... .... @load_disp4_reg width=4 dbase=1 disp=%load_disp4_shift
|
|
}
|
|
UNIMPLEMENTED 1000 0110 10-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
|
LOAD 0000 0000 0001 0010 1000 .... .... .... .... .... .... .... width=4 dbase=0 @load_disp20_reg
|
|
LOAD 0000 0000 0001 1000 1000 .... .... .... .... .... .... .... width=4 dbase=0 @load_disp20_reg
|
|
LOAD 0000 0000 0001 0010 1001 .... .... .... .... .... .... .... width=4 dbase=1 @load_disp20_rp
|
|
LOAD 0000 0000 0001 1000 1001 .... .... .... .... .... .... .... width=4 dbase=1 @load_disp20_rp
|
|
LOAD_rrp 0000 0000 0001 0010 1010 .... .... .... .... .... .... .... width=4 @load_disp20_rrp
|
|
LOAD_abs 1000 0111 .... .... .... .... .... .... width=4 @load_abs20
|
|
LOAD_ind_abs 1000 110. .... .... .... .... .... .... width=4 @load_ind_abs
|
|
LOAD_abs 0000 0000 0001 0010 1011 .... .... .... .... .... .... .... width=4 @load_abs24
|
|
|
|
|
|
&stor rs ra dbase disp width
|
|
&stor_rrp rs rrp disp width
|
|
&stor_abs rs addr width
|
|
&stor_ind_abs rs ri addr width
|
|
|
|
&stor_imm imm ra dbase disp width
|
|
&stor_rrp_imm imm rrp disp width
|
|
&stor_abs_imm imm addr width
|
|
&stor_abs_rrp_imm imm ri addr width
|
|
|
|
%stor_disp20 40:s4 16:s16
|
|
%stor_disp14 40:6 46:2 52:2 32:4
|
|
%stor_disp4 56:4
|
|
%stor_disp4_shift 56:4 !function=get_disp4
|
|
|
|
@stor_disp16_reg .... .... rs:4 ra:4 &stor
|
|
@stor_disp20_reg .... .... .... .... .... .... rs:4 ra:4 .... .... .... .... disp=%stor_disp20 &stor
|
|
@stor_disp20_rrp .... .... .... .... .... .... rs:4 rrp:4 .... .... .... .... disp=%stor_disp20 &stor_rrp
|
|
@stor_disp20_rp .... .... .... .... .... .... rs:4 ra:4 .... .... .... .... disp=%stor_disp20 &stor
|
|
@stor_abs20 .... .... rs:4 .... .... .... .... .... addr=%addr_abs20 &stor_abs
|
|
@stor_ind_abs .... ... ri:1 rs:4 addr:20 &stor_ind_abs
|
|
@stor_disp4_reg .... .... rs:4 ra:4 &stor
|
|
@stor_abs24 .... .... .... .... .... .... rs:4 .... .... .... .... .... addr=%addr_disp24 &stor_abs
|
|
#@stord_disp14_rrp .... .... .... rrp:4 .... .... rs:4 .... disp=%stor_disp14 &stor_rrp
|
|
|
|
@stor_disp14_rrp_imm .... .... .... rrp:4 .... .... imm:4 .... disp=%stor_disp14 &stor_rrp_imm
|
|
@stor_disp16_imm .... .... imm:4 ra:4 &stor_imm
|
|
@stor_disp20_reg_imm .... .... .... .... .... .... imm:4 ra:4 .... .... .... .... disp=%stor_disp20 &stor_imm
|
|
@stor_disp20_rrp_imm .... .... .... .... .... .... imm:4 rrp:4 .... .... .... .... disp=%stor_disp20 &stor_rrp_imm
|
|
@stor_disp20_rp_imm .... .... .... .... .... .... imm:4 ra:4 .... .... .... .... disp=%stor_disp20 &stor_imm
|
|
@stor_abs_imm .... .... imm:4 addr:20 &stor_abs_imm
|
|
@stor_abs_rrp_imm .... ... ri:1 imm:4 addr:20 &stor_abs_rrp_imm
|
|
@stor_abs24_imm .... .... .... .... .... .... imm:4 .... .... .... .... .... addr=%addr_disp24 &stor_abs_imm
|
|
|
|
{
|
|
STOR_rrp 1111 1110 rs:4 rrp:4 width=1 disp=0 &stor_rrp
|
|
STOR 1111 1111 .... .... @stor_disp16_reg width=1 dbase=1 disp=%load_u16
|
|
STOR 1111 .... .... .... @stor_disp4_reg width=1 dbase=1 disp=%stor_disp4
|
|
}
|
|
UNIMPLEMENTED 1100 0110 01-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
|
STOR 0000 0000 0001 0011 0100 .... .... .... .... .... .... .... width=1 dbase=0 @stor_disp20_reg
|
|
STOR 0000 0000 0001 1001 0100 .... .... .... .... .... .... .... width=1 dbase=0 @stor_disp20_reg
|
|
STOR 0000 0000 0001 0011 0101 .... .... .... .... .... .... .... width=1 dbase=1 @stor_disp20_rp
|
|
STOR 0000 0000 0001 1001 0101 .... .... .... .... .... .... .... width=1 dbase=1 @stor_disp20_rp
|
|
STOR_rrp 0000 0000 0001 0011 0110 .... .... .... .... .... .... .... width=1 @stor_disp20_rrp
|
|
STOR_abs 1100 1000 .... .... .... .... .... .... width=1 @stor_abs20
|
|
STOR_ind_abs 1100 101. .... .... .... .... .... .... width=1 @stor_ind_abs
|
|
STOR_abs 0000 0000 0001 0011 0111 .... .... .... .... .... .... .... width=1 @stor_abs24
|
|
STOR_rrp_imm 1000 0110 00.. .... .... .... .... .... width=1 @stor_disp14_rrp_imm
|
|
STOR_imm 0000 0000 0001 0010 0000 .... .... .... .... .... .... .... width=1 dbase=0 @stor_disp20_reg_imm
|
|
STOR_imm 1000 0010 imm:4 ra:4 width=1 dbase=1 disp=0 &stor_imm
|
|
STOR_imm 1000 0011 .... .... width=1 dbase=0 disp=%load_u16 @stor_disp16_imm
|
|
STOR_imm 0000 0000 0001 0010 0001 .... .... .... .... .... .... .... width=1 dbase=1 @stor_disp20_rp_imm
|
|
STOR_rrp_imm 0000 0000 0001 0010 0010 .... .... .... .... .... .... .... width=1 @stor_disp20_rrp_imm
|
|
STOR_abs_imm 1000 0001 .... .... .... .... .... .... width=1 @stor_abs_imm
|
|
STOR_abs_rrp_imm 1000 010. .... .... .... .... .... .... width=1 @stor_abs_rrp_imm
|
|
STOR_abs_imm 0000 0000 0001 0010 0011 .... .... .... .... .... .... .... width=1 @stor_abs24_imm
|
|
{
|
|
STOR_rrp 1101 1110 rs:4 rrp:4 width=2 disp=0 &stor_rrp
|
|
STOR 1101 1111 .... .... @stor_disp16_reg width=2 dbase=1 disp=%load_u16
|
|
STOR 1101 .... .... .... @stor_disp4_reg width=2 dbase=1 disp=%stor_disp4
|
|
}
|
|
UNIMPLEMENTED 1100 0110 11-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
|
STOR 0000 0000 0001 0011 1100 .... .... .... .... .... .... .... width=2 dbase=0 @stor_disp20_reg
|
|
STOR 0000 0000 0001 1001 1100 .... .... .... .... .... .... .... width=2 dbase=0 @stor_disp20_reg
|
|
STOR 0000 0000 0001 0011 1101 .... .... .... .... .... .... .... width=2 dbase=1 @stor_disp20_rp
|
|
STOR 0000 0000 0001 1001 1101 .... .... .... .... .... .... .... width=2 dbase=1 @stor_disp20_rp
|
|
STOR_rrp 0000 0000 0001 0011 1110 .... .... .... .... .... .... .... width=2 @stor_disp20_rrp
|
|
STOR_abs 1100 1001 .... .... .... .... .... .... width=2 @stor_abs20
|
|
STOR_ind_abs 1100 111. .... .... .... .... .... .... width=2 @stor_ind_abs
|
|
STOR_abs 0000 0000 0001 0011 1111 .... .... .... .... .... .... .... width=2 @stor_abs24
|
|
STOR_rrp_imm 1100 0110 00.. .... .... .... .... .... width=2 @stor_disp14_rrp_imm
|
|
STOR_imm 0000 0000 0001 0011 0000 .... .... .... .... .... .... .... width=2 dbase=0 @stor_disp20_reg_imm
|
|
STOR_imm 1100 0010 imm:4 ra:4 width=2 dbase=1 disp=0 &stor_imm
|
|
STOR_imm 1100 0011 .... .... width=2 dbase=0 disp=%load_u16 @stor_disp16_imm
|
|
STOR_imm 0000 0000 0001 0011 0001 .... .... .... .... .... .... .... width=2 dbase=1 @stor_disp20_rp_imm
|
|
STOR_rrp_imm 0000 0000 0001 0011 0010 .... .... .... .... .... .... .... width=2 @stor_disp20_rrp_imm
|
|
STOR_abs_imm 1100 0001 .... .... .... .... .... .... width=2 @stor_abs_imm
|
|
STOR_abs_rrp_imm 1100 010. .... .... .... .... .... .... width=2 @stor_abs_rrp_imm
|
|
STOR_abs_imm 0000 0000 0001 0011 0011 .... .... .... .... .... .... .... width=2 @stor_abs24_imm
|
|
{
|
|
STOR_rrp 1110 1110 rs:4 rrp:4 width=4 disp=0 &stor_rrp
|
|
STOR 1110 1111 .... .... @stor_disp16_reg width=4 dbase=1 disp=%load_u16
|
|
STOR 1110 .... .... .... @stor_disp4_reg width=4 dbase=1 disp=%stor_disp4
|
|
}
|
|
UNIMPLEMENTED 1100 0110 10-- ---- ---- ---- ---- ---- # Unable to test, because of gnu assembler bug
|
|
STOR 0000 0000 0001 0011 1000 .... .... .... .... .... .... .... width=4 dbase=0 @stor_disp20_reg
|
|
STOR 0000 0000 0001 1001 1000 .... .... .... .... .... .... .... width=4 dbase=0 @stor_disp20_reg
|
|
STOR 0000 0000 0001 0011 1001 .... .... .... .... .... .... .... width=4 dbase=1 @stor_disp20_rp
|
|
STOR 0000 0000 0001 1001 1001 .... .... .... .... .... .... .... width=4 dbase=1 @stor_disp20_rp
|
|
STOR_rrp 0000 0000 0001 0011 1010 .... .... .... .... .... .... .... width=4 @stor_disp20_rrp
|
|
STOR_abs 1100 0111 .... .... .... .... .... .... width=4 @stor_abs20
|
|
STOR_ind_abs 1100 110. .... .... .... .... .... .... width=4 @stor_ind_abs
|
|
STOR_abs 0000 0000 0001 0011 1011 .... .... .... .... .... .... .... width=4 @stor_abs24
|
|
|
|
&ldstm cnt pair
|
|
|
|
@ldstm .... .... .... . cnt:3 &ldstm
|
|
|
|
LOADM 0000 0000 1010 0... pair=0 @ldstm
|
|
LOADM 0000 0000 1010 1... pair=1 @ldstm
|
|
STORM 0000 0000 1011 0... pair=0 @ldstm
|
|
STORM 0000 0000 1011 1... pair=1 @ldstm
|