1

たとえば、次のアセンブラ ステートメントはオペコードに変換する必要があります。0x0000000b

custom0 0,0,0,0

古いバージョンの riscv-gnu-toolchain (6 月 4 日にビルド) では、これをアセンブルするのに -march= オプションは必要ありませんでした。ただし、今日のriscv-toolsの git head を使用すると、次のようになります。

$ /opt/riscv_new/bin/riscv64-unknown-elf-as -m32 test.s
test.s: Assembler messages:
test.s:1: Error: unrecognized opcode `custom0 0,0,0,0'

ソースコードを読んで、アーチXcustomをツールに渡すとそれが修正されるはずだと思いますが、

$ /opt/riscv_new/bin/riscv64-unknown-elf-as -m32 -march=RV32IMXcustom test.s 
test.s: Assembler messages:
test.s:1: Error: unrecognized opcode `custom0 0,0,0,0'

(現時点では、このため、PicoRV32 テスト ファームウェアは最新の riscv-gnu-toolchain でビルドされません )

編集: 私のために働く riscv-tools の最後のバージョンは、8 月 20 日のコミット 84a47e0b4e です。そのバージョンでは、-march=オプションの有無にかかわらず、custom0 オペコードが認識されます。

4

2 に答える 2

3

申し訳ありませんが、これを見つけるのに時間がかかりました-私はstackoverflowを読んでいません。今後の参考のために、github の問題/PR を送信するか、私に直接メールを送信していただければ、この種のことを処理します。

ここに修正があるはずです。確認してよろしいですか? https://github.com/riscv/riscv-gnu-toolchain/pull/97

回帰を導入して申し訳ありません!

于 2015-10-29T18:15:55.470 に答える