0

私は現在 NASM を学んでいますが、教科書では説明されていないことがたくさんあります。私は、教授からの「まあ、それはそれで受け入れてください」という回答や、他のいくつかの質問への回答に慣れてきましたが、どの回答がより良い結果を得る可能性があるかを知ることにも慣れてきました。本当の答え

NASM プログラムがとの 3 つのセクション.dataに分かれている技術的な理由は何ですか? 舞台裏で実際に何が起こっているのでしょうか。定数がある場合、アセンブラが事前に知る必要があるのはなぜですか?.bss.text

4

1 に答える 1

0

dataセクションは、初期化されたすべてのデータが入る場所です。文字列、DWORDS、WORDS、BYTES、QWORDS など、プログラムの開始時に値が必要なすべてのもの。このセクションは読み書き可能です。また、ここにあるものすべて、最終的なexeサイズに追加されるため、非常に長い文字列がある場合; 200 バイトと言うと、この文字列がない場合よりも、プログラムは 200 バイト大きくなります。

このbssセクションは、初期化されていないすべてのデータが、プログラムの開始時に値を必要としないすべての場所になります。ここに追加されたものは、最終的な exe サイズには追加されません。ここに入力したものは、プログラムの実行中にメモリに空きが必要になるため、exe ローダーにそのような変数にメモリを割り当てるように指示します。このセクションは読み書き可能です。

セクションは、textすべてのプログラム コードが入る場所です。このセクションは読み取り専用です。

必要に応じて各セクションの属性を変更したり、必要に応じて独自のセクションを作成したりできます。

これらはすべて研究によって見つけることができます。

于 2013-02-27T03:03:45.497 に答える