5

PowerPCとARMのアセンブラーでプログラミングを学びたいのですが、この目的のために実際のハードウェアを購入することはできません。そのためにQEMUを使うことを考えています。ただし、両方のアーキテクチャを十分にエミュレートしているかどうかはわかりません。ネイティブアセンブラでプログラムをコンパイルして実行しますか?

4

2 に答える 2

8

QEMUは、プログラム修正のテスト(つまり、コードが実際のARMまたはPowerPCで適切に実行されるかどうか)には適していますが、プログラムの効率のテストには適していません。エミュレーションはサイクルが正確ではなく、QEMUで測定された速度は確実に(または信頼できない)真のハードウェアの速度と相関関係があります。

また、QEMUはアラインされていないメモリアクセスをトラップしません。これはPowerPCエミュレーションでは問題になりません(PowerPCはアラインされていないアクセスを許容します)が、ARMでは問題になる可能性があります(アラインされていないアクセス、たとえば、RAM内の32ビットワードをそうでないアドレスから読み取る4の倍数はQEMUで正常に動作しますが、真のARMプロセッサで例外をトリガーします)。

これらの点を除けば、QEMUはARMまたはMIPSでのアセンブリ開発に適しています(eBayで古いiBookを見つけたため、PowerPCを試していませんが、QEMUでARMおよびMIPSアセンブリを実行し、結果のコードを実行しました真のハードウェア、そしてこれはうまくいきました)。システム全体をエミュレートしてその中でDebianを実行するか(この場合、コンパイラ、リンカ、テキストエディタもエミュレーションで実行されます)、ARM/MIPS実行可能ファイルが実行される「ユーザーモードエミュレーション」を使用できます。直接、システムコールをホストPCのコールに変換するラッパーを使用します(これは、ホストがLinuxを実行しているPCであると想定しています)。後者の方が便利ですが(通常のホームディレクトリにアクセスでき、プログラミングツールはネイティブです...)、クロス開発ツールをインストールする必要があります。そのためのbuildrootを参照してください(そしてリンク-static、これは多くの頭痛を回避します)。

于 2010-10-27T10:36:20.343 に答える
1

PowerPC用とARM用のDebianがQEMUで実行できる兆候を見つけたので、これは問題にならないだろうと思います。

于 2010-06-13T14:29:03.317 に答える