Question

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.

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top