MinCamlを動かすのに必要な命令
from マルチサイクル RISC-V CPU を作成したい
整数命令
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
足りない命令
RISC-Vのオブジェクトファイルから使用している命令を抜き出す手順 の手順で、MinCamlを動かすのに足りない命令を調べた。
整数命令
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]