現在、Kip Irvineの「アセンブリ言語for x86プロセッサ」に従ってアセンブリプログラミングを学習しています。 3.4.12節では、初期化された配列と初期化されていない配列が占めるメモリの見方
:
.DATA?
ディレクティブは、初期化されていないデータを宣言しています。 大きなブロックの初期化されていないデータを定義すると、.DATA?
ディレクティブは、コンパイルされたプログラムのサイズを に縮小します。私が見たいと思って.data smallArray DWORD 10 DUP(0) ; 40 bytes bigArray DWORD 5000 DUP(?) ; 20,000 bytes
.data
smallArray DWORD 10 DUP(0) ; 40 bytes
.data?
bigArray DWORD 5000 DUP(?) ; 20,000 bytes, not initialized
次のコードは、他の一方で、コンパイルされたプログラムに 2万バイトより大きいを生成します。たとえば、次のコードは、 が効率的に宣言されていますプログラムがコンパイルされた後の各バージョンのコードのメモリフットプリントは、.data?
の影響を自分で見ることができますが、どうすればよいのか分かりません。私はプログラムのコンパイル後のコードの各バージョンのメモリフットプリントを見たい
リンクマップにレイアウトされています。 **および** ml.exeでリンクする場合は/ Fmスイッチを、link.exeを使用して別の手順でリンクする場合は/ linkを使用してください。 –
[* Very *同様の質問](https://stackoverflow.com/questions/7137049/how-does-masm-data-directive-work-internally);私はこれらの2つを組み合わせ、この情報を複製して1つの場所に情報をまとめておくことを検討しています。 –
@CodyGray私はあなたに同意します、彼らは確かに非常に似ています – Thor