問題タブ [riscv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
711 参照

riscv - Risc-V-Privileged-Spec-v1.7 に関する 2 つの質問

  1. ページ 16、表 3.1: mcpuid のベース フィールド: RV32I RV32E RV64I RV128I

    • 「RV32E」とは?
    • 「E」拡張子はありますか?
  2. ECALL (30 ページ) は、PC の動作については何も述べていません。一方、mepc (28 ページ) と mbadaddr (29 ページ) は、「mepc は命令の先頭を指す」と主張しています。ERET が次の命令に進むように、ECALL は mepc を原因となる命令の最後に設定する必要があると思います。そうですか?

0 投票する
2 に答える
235 参照

riscv - Rocketchip_wrapper.v のシステム モジュール

fpga-zynq/common/ にあるrocketchip_wrapper.vを参照して、特定の変更を加え、新しいfpga用にカスタマイズしました。行 136 では、モジュール システムがインターフェイスされています (システム system_i (....))。このシステム モジュールはどこで定義されていますか?
また、AXI モジュールはどこか (IP コア) からインポートされていますか、それともデザイン自体で完全に定義されていますか?

0 投票する
1 に答える
1066 参照

riscv - RISC-V ISA の入出力操作

ISA 2.0 で IO について言及しているものは見当たりませんでした。RISC-V IO メモリはマップされていますか? IO の実行方法に関する仕様はありますか? 独自のメソッドを定義できますか? ティア。

0 投票する
3 に答える
11701 参照

riscv - C コードをコンパイルして、最小限の RISC-V アセンブリ プログラムのベアメタル スケルトンを取得するにはどうすればよいですか?

次の単純な C コードがあります。

これをコンパイルすると

私が使用するアセンブリコードを見たい場合

しかし、アセンブリ コードを調べると、プロキシ カーネルのサポート用であると思われる多くのコードが生成されることがわかります (私は riscv の初心者です)。ただし、FPGA 内にこの単純な C コードのみを実装することを目的としているため、このコードがプロキシ カーネルをサポートすることは望ましくありません。

riscv には、ベアメタル モード、newlib プロキシ カーネル、および riscv Linux の 3 種類のコンパイルが用意されていると読みました。以前の調査によると、私が行うべきコンパイルの種類はベア メタル モードです。これは、オペレーティング システムまたはカーネル プロキシをサポートしない最小限のアセンブリが必要なためです。システムコールとしてのアセンブリ関数は必要ありません。

ただし、最小限のriscvアセンブリプログラムのスケルトンを取得するためにCコードをコンパイルできるため、まだ見つけることができていません。上記の C コードをベア メタル モードでコンパイルしたり、最小限の riscv アセンブリ コードのスケルトンを取得するにはどうすればよいですか?

0 投票する
2 に答える
1597 参照

disassembly - RISCV 逆アセンブル オプションの数値およびエイリアスなし

riscv-tools リポジトリ (マスター ブランチ) のクローンを作成し、ビルド手順に従いました。すべてうまくいきました。

次に、RV32IM 命令セット用に hello world プログラムをコンパイルしてみました。

options save-temps を使用して、中間ファイルを保持しました。(こんにちは.s, こんにちは.i, こんにちは.o)

これまでのところすべて問題ありません。次のコマンドで hello world プログラムを実行できます。

ここで、このプログラムのアセンブリ コードを見てみたいと思います。私は次のことを行い、アセンブリコードを hello.dump に取得します

ここで注目したいのは、疑似命令を使用せず、非 ABI レジスタ名を使用したアセンブリ コードです。

私がそうするとき、それを得ることが可能であるように思われます:

私はこれを得る:

ただし、これらのオプションを追加しようとすると機能しません。

コマンド構文エラーですか、それとも逆アセンブラでまだサポートされていないだけですか?

0 投票する
1 に答える
1758 参照

riscv - RISC-V Rocket チップで実行するカスタム hex ファイルを正しく生成するにはどうすればよいですか?

サイクル精度の高い RISC-V Rocket-chip C++ エミュレーターを使用して、小さなバイナリ ファイル (16 進数に変換) をシミュレートしようとしています。エミュレーターのビルド プロセスは成功し、make runは正しいテスト/ベンチマーク結果を生成します。

ただし、カスタム ソース コードをコンパイルしてシミュレートすると、ログ ファイルに大量の 000000... が出力されました。確かに、十分なサイクル カウントでこれらのログを確認しましたが、実行中に変更はありませんでした。シミュレーションを停止することなく、オペランド番号、inst、DASM などに 0000.. を出力し続けました。一部の例外は最初の数行です。以下を参照してください。

シミュレーションの途中で、pc は最終的に増加しますが、それでも 0000 を出力します.. 何度も何度も停止しませんでした。これが私が試したCソースコードとプロセスです。(また、他の多くのソースを試しました。)

そして、コマンドリスト。

シミュレーターは、変換された 16 進形式を正しく認識していないと思います。そのため、正しい命令ストリームをトリガーできません。誰でも助けることができますか?

ありがとう、

0 投票する
1 に答える
361 参照

riscv - How can I see the content of a float-point register on spike?

I'm working with a riscv code and I want to simulate it using the spike tool. The aim of the simulation is to see the content of some float-point registers.

So, if i want to see the content of an integer register i use the next command:

but if i attempt to use the same command for a float-point register:

it always shows me all the bits set to zeros............

I attach some of the assembler code that i'm working....

In this fragment of the code I used the command reg to see the content of the float-point registers ft1 and ft0 (reg 0 ft1 or reg 0 ft0) after the fadd.s instruction, the result is:

But if i look for the content saved in memory after the execution of the fsw instruction, the result is not zero and it is correct

As you can see the question is why using the reg command to see the content of a float-point register always bring me zeros as the content of the register. It's something wrong with the reg format and the float-point registers?

0 投票する
2 に答える
1243 参照

riscv - RISCV ツール チェーンは pthread ライブラリをサポートしていますか?

ubuntu マシンに riscv-tools リポジトリを複製して構築しました。Hello world プログラムはうまく機能します。

現在、アプリケーションを X86 ターゲットから riscv (RV32IM) ターゲットに移植しようとしています。私のアプリケーションは数学ライブラリと pthread ライブラリに依存しています。コードで pthread.h ヘッダー ファイルの宣言を使用しようとすると、問題が発生します。

私の問題を示すために、非常に単純なサンプル コードを作成しました。

これが私のexample.cファイルの内容です

わかりました。RISCV ターゲット用にコンパイルするためのコマンド ラインを次に示します。

コンパイラの出力は次のとおりです。

数学ライブラリには問題がありませんが、pthread ライブラリのものはエラーになることに注意してください。

明らかに、この単純な例を X86 ターゲット用にコンパイルすると、魅力的に機能します。X86 ターゲットのプログラム出力は次のとおりです。

RISCV ターゲットでコンパイルして実行すると、最終的に次のようになります。

RISCV ツール チェーンの pthread ライブラリの問題は何ですか? RISCVコミュニティの誰でもそれを再現できますか? 同じ問題が発生している人はいますか?

どんな助けでも大歓迎です!

0 投票する
2 に答える
973 参照

riscv - Rocket and Chisel - アセンブラー テスト用のエミュレーターで何も起こらない

riscv-tools とロケット チップ エミュレータを作成しました。run-asm-tests を実行すると、出力は空のファイルになります。何も起こらないようです。

そして、手動で実行して最大サイクルを減らすと、次のようになります。

ノート ::

1) mm_dramsim2.cc のマクロ #ifdef DEBUG_DRAMSIM2 のコメントを外しました。

2) チゼル コンパイラからのエミュレータのメイク フローにいくつかの警告があります。重要な場合に備えて、以下に再現します。

3) これはスタック オーバーフローでの最初の投稿です。さらに、チゼル/riscv は初めてです。明らかな間違いがあればお許しください!