1

[私は CPU レジスタについて混乱しており、インターネット全体で本当に明確で首尾一貫した説明を見つけられませんでした。誰かが有用なものへのリンクを持っている場合は、コメントまたは回答に投稿していただければ幸いです。]

私が今ここにいる主な理由は、[これまで無駄だった] 言語を学ぼうとしてサンプルの NASM プログラムを見てきたためです。プログラムは常にシステムコールコードを配置してから呼び出すことで終了しますeaxint 0x80誰かが説明してくれるとうれしいです)。ただし、私が理解していることからeax、32ビットレジスタです-システムコールを保存するために32ビットが必要なのはなぜですか(2 32の価値はないと確信しています)。また、プログラム自体の実行中に他の値や文字列が eax に移動されることもあります。それはeax、最終的にシステムコールを実行したいときにのみ特別な用途があり、残りの時間は好きなように使用できるということですか?

4

3 に答える 3

3

のすべてのビットeaxが使用されるのは、それがシステム コール インターフェイスの実装方法であるためです。2 32システムコールがなく、2 16さえないのは事実です。しかし、それはそうです。システムコールのセットを簡単に拡張できます。難しく考える必要はありません、事実として受け入れて生きてください。

eaxは汎用レジスタであり、好きなことを行うことができます。システム コール ID を格納するために使用されているという事実は、確立された規則であり、それ以外の何物でもありません。eaxそれ以外の使用は禁止されていません。

于 2013-02-26T05:19:03.323 に答える
1

eax は汎用レジスタなので、好きなものを入れることができます。int 0x80 はシステム コールの割り込みです...その割り込みは eax の値を見て、そのシステム ルーチンを呼び出します。

于 2013-02-26T04:52:39.893 に答える