问题
In Kip Irvines book I came across the following :
The .DATA? directive declares uninitialized data. When defining a large block of uninitialized data, the .DATA? directive reduces the size of a compiled program. For example, the followingcode is declared efficiently:
.data?
bigArray DWORD 5000 DUP(?) ; 20,000 bytes, not initialized
The following code, on the other hand, produces a compiled program 20,000 bytes larger:
.data
bigArray DWORD 5000 DUP(?) ; 20,000 bytes
What exactly is the .data? directive doing under the hood in the above example to make the program 20k smaller.
回答1:
The uninitialized data need not be in the compiled binary, just a byte count that the OS loader allocates at run-time when executing your program.
来源:https://stackoverflow.com/questions/7137049/how-does-masm-data-directive-work-internally