On Sunday, 5 January 2014 at 08:23:45 UTC, TheFlyingFiddle wrote:
On Sunday, 5 January 2014 at 06:31:38 UTC, Jake Thomas wrote:
And got 86,421 lines of assembly!! I expected a load
instruction to load whatever was at loadMe's location into r0
(the return register) and not much else. Maybe 10 lines - tops
- due to compiler fluffiness. I got about 8,641 times that -
over 3 more orders of magnatude. What is going on here?
Well the compiler pulls in at minimum the entire D runtime if
i'm not mistaken which make the standard .exe about 350kb.
Ah. Thank you for the explaination.
Things like Object.factory also pulls in it's fair share due to
not being able to remove classes. So we get alot of fluff in
small programs.
What do you mean by not being able to remove classes?
Isn't the whole point of offering a language that has both
structs, which
can have functions, and classes to do away with classes when
inheritence
isn't needed?
The module layout of the standard library is also a problem,
there is a lot of interconnections between the different
modules in Phobos. (will hopefully be better when the modules
are broken down into submodules)
I'm a big fan of 99% of D's specification, perhaps less a fan
of its current implementation.
But implementations hopefully change over time for the better.
The hope is to one day simply re-compile the same source with a
better compiler.
I tested your test program on windows x64 and got the following
result:
mov ebp,esp
sub rsp,10h
mov eax,dword ptr [rbp-8]
lea rsp,[rbp]
pop rbp
ret
//This does a 32 bit load into the eax register (return
//register) from the stack.
mov eax,dword ptr [rbp-8]
What tools and parameters did you use to obtain that dissassembly?
I did not find "dword" anywhere in the dissassembly of my test
program.
The last place I found eax used was this line:
27: 2e 33 00 xor %cs:(%rax),%eax
Jake