Program size, linking matter, and static this()
Marco Leise
Marco.Leise at gmx.de
Tue Dec 20 13:07:19 PST 2011
Am 20.12.2011, 16:00 Uhr, schrieb Denis Shelomovskij
<verylonglogin.reg at gmail.com>:
> The second dmd issue (that was discovered because of 99.00% of zeros) is
> that _it doesn't use bss section_.
> Lets look at the C++ program built using Microsoft's cl:
> ---
> char arr[1024 * 1024 * 10];
> void main() { }
> ---
> It resultis in ~10KiB executable, because `arr` is initialized with zero
> bytes and put in bss section. If one of its elements is set to non-zero:
> ---
> char arr[1024 * 1024 * 10] = { 1 };
> void main() { }
> ---
> The array can't be in .bss any more and resulting executable size will
> be increased by adding ~10MiB. The following D program results in ~10MiB
> executable:
> ---
> ubyte[1024 * 1024 * 10] arr;
> void main() { }
> ---
> So, if there really is a reason not to use .bss, it should be clearly
> explained.
>
>
>
> If described issues aren't much more significant than "static this()",
> show me where am I wrong, please.
+1. I didn't know about .bss, but static arrays of zeroes (global, struct,
class) increasing the executable size looked like a problem wanting a
solution. I hope it is easy to solve for dmd and is just an unimportant
issue, so was never implemented.
More information about the Digitalmars-d
mailing list