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

Reply via email to