Python Front-end to GCC
Grant Edwards
invalid at invalid.invalid
Tue Oct 22 11:36:38 EDT 2013
On 2013-10-22, Dave Angel <davea at davea.name> wrote:
> On 22/10/2013 08:00, Steven D'Aprano wrote:
>> [quote]
>> C does not require you to set static global arrays to ?0?, so the
>> for loop in the main function can go...
>>
>> Wait a minute... Haskell, I'm pretty sure, zeroes memory. C doesn't. So
>
> Static int variables are in fact zeroed. However, most C compilers
> do it by putting four bytes (or whatever) into the image of the
> executable so it has no runtime cost.
No, that's not how gcc works (nor is it how any other C compiler I've
ever seen works). Static variables get located in a "bss" section[1],
which is zeroed out at run-time by startup code that gets executed
before main() is called. The ELF executable contains headers that
describe the size/location of bss section, but the object file
contains no actual _data_.
[1] IIRC, the name "bss" is a historical hold-over from the PDP-11
assembler directive that is used to declare a section of memory
that is to be filled with zeros. Not all compilers use that
section name, but they all use the same mechanism.
> int myvar = 34 * 768;
>
> it'll put the product directly in the executable image, and no
> runtime code is generated.
That is true.
--
Grant Edwards grant.b.edwards Yow! My EARS are GONE!!
at
gmail.com
More information about the Python-list
mailing list