私はRiscV ISSを開発しており、検証スイートを実行すると、add命令でエラーが発生します。私は(コメントとして実行中の状態を登録する)コードのこの部分に問題を釘付け:RiscV ISS実装の間違い
lui ra,0x80000 ;; ra = 0x80000000
lui sp,0xffff8 ;; sp = 0xffff8000
add t5,ra,sp ;; t5 = 0x17fff8000
lui t4,0xffff0 ;; t4 = 0xffff0000
addiw t4,t4,-1 ;; t4 = 0xfffeffff
slli t4,t4,0xf ;; t4 = 0x7fff7fff8000
li gp,7 ;; gp = 7
bne t5,t4,800005f0 <fail> ;; The program branches to fail :(
は明らかT5およびT4は失敗するルーチンに実行ので、プログラムの枝の間に同じ値を提示しない登録します。
誰かが、どの命令が自分のコードで悪い結果を生成しているかを指摘していただけますか?
乾杯
こんにちは。 「ISS」とは何ですか?公開ですか? bellardさんがriscvemu https://bellard.org/riscvemu/をチェックしましたか?michaeljclarkさんがhttps://github.com/rv8-io/rv8をrv8しましたか? – osgx
こんにちは、それは私が楽しいために構築しているインストラクションセットシミュレータです。リンクありがとう。確認してみるよ。 –