MinCamlを動かすのに必要な命令
整数命令
lw
sw
add
addi
sub
and
or
xor
slt
sltu
beq
bne
jal
jalr
lui
auipc
ori
srl
sra
sll
浮動小数点命令
flw
fsw
fadd_s
fsub_s
fmul_s
fdiv_s
fcvt_s_w
fcvt_w_s
fsgnj_s
fsgnjn_s
feq_s
flt_s
fle_s
fmv_x_w
fmv_w_x
足りない命令
整数命令
auipc
bne
blt
slli
mv(擬似命令)
li(擬似命令)
j(擬似命令)
ret(擬似命令)
neg(擬似命令)
emit.ml にいるから足しとこうかな
ble
bne
ble
blt
bgt
bge
浮動小数点数命令
flw
fsw
fadd.s
fsub.s
fmul.s
fdiv.s
feq.s
flt.s
fle.s
fcvt.s.w (float->int)
fcvt.w.s(int->float)
fsgnj.s (Floating-point Sign Inject, Single-Precision)
f[rd] = {f{rs2][31], f[rs1][30:0]}
fsgnjn.s (Floating-point Sign Inject-Negate, Single-Precision)
f[rd] = {~f[rs2][31], f[rs1][30:0]}
fmv.w.x (Floating-point move Word from Integer)
f[rd] = x[rs1]
fmv.x.w (Floating-point Move Word to Integer)
x[rd] = f[rs1]