How do I choose the correct primative?
    Jake Thomas 
    jake at fake.com
       
    Sat Jan  4 22:31:37 PST 2014
    
    
  
> According to this 
> (http://msdn.microsoft.com/en-us/library/windows/hardware/ff561499(v=vs.85).aspx) 
> 32-bit registers are automatically zero extended on x64 
> architecture while 16-bit and 8-bit registers are not.
>
"Operations that output to a 32-bit subregister are automatically 
zero-extended to the entire 64-bit register. Operations that 
output to 8-bit or 16-bit subregisters are not zero-extended 
(this is compatible x86 behavior)."
Hmmm. Sounds like 32-bit compatibilty mode stuff. I'm concerned 
that a 64-bit binary outputted by dmd would contain no 32-bit 
mode instructions, therefore, although a load instuction exists 
that would automatically zero-pad, I'm not sure dmd uses it.
The file command (in Linux) tells me that my outputted binary is 
a 64-bit binary, not a 32-bit/64-bit hybrid binary. Then again, 
maybe it's not programmed to check for hybrid binaries and just 
says "64-bit" if it is 64-bit overall.
To try and check for myself, I ran the binary through objdump. I 
found the "LEA"
instruction. I don't know if it's a 32-bit load instruction or a 
64-bit load instruction.
But _wow_ was I shocked at how many lines of assembly were 
generated!
I tried the following:
int main()
{
   int loadMe = void;
   return loadMe;
}
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?
>>I guess the exact type of variables should remain up in the air 
>>until the whole thing is implemented and tested using different 
>>types?
>
> Yes very much so.
Ah ha. Thanks for the tip. I see that this makes one's effort to 
lay down an API/library/module specification a little 
interesting. Can't publish your chickens until they hatch.
    
    
More information about the Digitalmars-d-learn
mailing list