1

以前の学校ではx86アーキテクチャでプログラミングしましたが、MIPSの知識が必要な新しいクラスでプログラミングしました。2つの世界のコンセプトとアーキテクチャの主な違いは何ですか?ありがとう

4

1 に答える 1

2

MIPS ASM を見てからしばらく経ちましたが、思い出すと...

x86 アセンブリ言語をどれだけ知っているかにもよりますが、MIPS ASM を理解するのはそれほど難しくないと思います。明らかに、非常に純粋な RISC 命令セットであるため、x86 よりもはるかに単純です。いくつかのデータ移動命令 (ロード/ストア)、いくつかの算術命令 (加算、減算、乗算、ビット シフトおよびマスキング)、および分岐 (非/条件付きジャンプ) があります。これらのテーマにはあまり多くの装飾はありません。

実際、MIPS を試してみて、信じられないほどの数の汎用レジスタを自由に使用できるのを見ると、少し甘やかされた気分になるかもしれません。x86 が 7 ~ 8 個の汎用レジスタ (ESP を考慮するかどうかによって異なります) と格闘する傾向があることをご存知ですか? MIPS には 32 の GP reg があります。

慣れなければならないことの 1 つは、パイプライン処理、またはパイプライン処理の意味です。1 つの命令が加算を実行し、その結果がレジスタ r5 に入る場合、次の命令が実行されるまでに合計が実際には利用できない場合があります。r5 が合計を保持する前に、別のサイクルまたは 2 サイクル (詳細は覚えていません) が必要になる場合があります。したがって、コードでそれを計画する必要があります。もう 1 つの意味は、分岐命令がすぐに分岐しないことです (ここでも、パイプライン処理のため、1 サイクルまたは 2 サイクルかかる場合があります)。したがって、たまたま分岐の後にある命令がプログラムの状態を奇妙な方法で台無しにしないようにする必要があります (疑わしい場合は、分岐の後に NO-OP を配置します)。

ASM を学習する最善の方法は、プログラムを ASM に逆アセンブルし、命令を調べ始めることです。そのためには、MIPS ツールチェーンをダウンロードしてインストールします ( MIPSを含む多数のアーキテクチャ用の最新のクロスコンパイル ツールチェーンを入手するには、ここが最適な場所です)。これを使用して、「Hello World」C プログラムといくつかの基本的な数式をコンパイルし、実行可能ファイルで MIPS バージョンの 'objdump -d' を実行します。main() 関数から始めて、出力を調べます。C 数学が MIPS ASM にどのようにマッピングされるかを理解します。

幸運を!些細なことではありませんが、既に x86 に習熟している場合は、このトピックに関する 1 学期のコースを受講しなくても、おそらく他の ASM セットを学習できると思います。

于 2012-04-16T01:13:44.040 に答える