NASM プログラムが 3 つの「セクション」に分割されている技術的な理由は何ですか? .data、.bss、および .text ? 舞台裏で実際に何が起こっているのでしょうか。定数がある場合、アセンブラが事前に知る必要があるのはなぜですか?
質問する
371 次
2 に答える
3
まず、これらのセクションを常に使用する必要はありません。多くのシステムでは、データ セクションに指示を、テキスト セクションにデータを含めることができます。
ただし、それらを使用する正当な理由がいくつかあります。
オペレーティング システムとハードウェアが十分に洗練されている場合は、特定のページを "実行不可" にマップすることができるため、誤ってデータ セクションにジャンプしてしまうバグから保護することができます。
同様に、テキスト セクションを「読み取り専用」としてマークすることもできるため、誤ったポインターで誤ってコードを変更することはありません。
最後に、bss セクションにはゼロで初期化されたデータしか含まれていないため、アセンブリ時にそのようにマークすると、実行可能ファイルのサイズを減らすことができます。一連のゼロを保持するためだけにストレージのバイト数。
于 2013-02-27T22:23:21.873 に答える
0
NASM の設計について話すことはできませんが、.text、.bss、および .data の 3 つのセクションは、それぞれコード、初期化された変数、および初期化されていない変数を保持し、結果のバイナリ ファイルで適切なアクセス フラグを使用してマッピングされます。
于 2013-02-27T22:22:34.070 に答える