我目前通過遵循Kip Irvine的「x86處理器的彙編語言」學習彙編編程。在第3.4.12節中,作者聲明:如何查看初始化陣列與未初始化陣列佔用的內存
.DATA?
指令聲明未初始化的數據。定義 大塊未初始化的數據時,.DATA?
指令會減小已編譯程序的大小 。例如,下面的代碼是 有效地宣稱:.data smallArray DWORD 10 DUP(0) ; 40 bytes .data? bigArray DWORD 5000 DUP(?) ; 20,000 bytes, not initialized
下面的代碼,在另一方面,產生一個編譯程序 20000字節的:
.data smallArray DWORD 10 DUP(0) ; 40 bytes bigArray DWORD 5000 DUP(?) ; 20,000 bytes
我想看程序編譯後每個版本代碼的內存佔用情況,所以我可以看到.data?
對我自己的影響,但我不確定它是如何完成的。
它被放置在鏈接圖中。如果編譯**和**鏈接到ml.exe,使用/ Fm開關;如果使用link.exe在單獨的步驟中鏈接,則使用/ link。 –
[* Very * similar question](https://stackoverflow.com/questions/7137049/how-does-masm-data-directive-work-internally);我正在考慮將這兩者結合起來,並將其標記爲重複,以將信息保存在一個地方。 –
@CodyGray我同意你的看法,他們的確非常相似 – Thor