spike-dasmの逆アセンブル結果がおかしい件について
risv-isa-simに付随しているspike-dasmの逆アセンブル結果におかしい点を見つけた。
$ echo "DASM(0x00000000)" | spike-dasm c.addi4spn s0, sp, 0
と表示されるんだが、これ unimp
が表示されるのが適切。 c.addi4spn
に関しては即値が0以外であることが、RISC-V ISA の仕様書にも書いてある。
C.ADDI16SP adds the non-zero sign-extended 6-bit immediate to the value in the stack pointer
ちなみに、objdump や radare2 は正しく出してくれた。
$ rasm2 -a riscv -d "0x0000" unimp
すでに、GitHubでもイシューとして上がっているけども、長い間修正されていないみたいだ。
spike-dasmを使う場合には注意を。