g++ を使用してコンパイルした elf ファイルの 16 進ダンプを、設計したプロセッサ シミュレーションに手動でロードしようとしています。標準の elf ファイルには 30 のセクションがあり、適切なメモリ位置のオフセットを考慮して 30 のセグメントすべてをロードしています。.text
次に、セクションの先頭 (00400130)でプログラム カウンターを開始しますが、プログラムが正しく実行されていないようです。SPIM をゴールド スタンダードとして使用して、プロセッサの設計を比較的徹底的に検証しました。奇妙なことに、アセンブリ ファイルを SPIM にロードし、ソフトウェアによって生成された逆アセンブルさ.text
れ.data
たセクションをプロセッサのメモリにロードすると、プログラムが動作します。これは、私がやりたいこととは異なります。
- C++ プログラムを書く
- mipseb-linux-g++ (クロス コンパイラ) を使用してコンパイルします。
- すべてのセクションを独自のファイルに16進数でダンプします
- ファイルを読み取り、コンテンツをプロセッサの「メモリ」にロードする
- プログラムを実行する
ELF ファイルのどこにプログラム カウンターを最初に配置する必要がありますか? .text
私は今の初めにそれを持っています。また、プログラムが正しく動作するためには、 .text
andを含めるだけでよいのでしょうか? .data
ここで何が間違っていますか?