[dmd-beta] dmd 1.063 and 2.048 beta

Fawzi Mohamed fawzi at gmx.ch
Mon Aug 9 13:23:24 PDT 2010


On 9-ago-10, at 22:08, Walter Bright wrote:

>
>
> Fawzi Mohamed wrote:
>> On 9-ago-10, at 16:29, Fawzi Mohamed wrote:
>>
>>> [...]
>>> Yes osx needs position independent code, I have tried to replace  
>>> D_PIC with IS_PIC and add
>>
>> from experimenting with gdc and the atomic module I remember that I  
>> had to completly free up ebx, as it holds the Position-independent  
>> code base register.
>> Even pushing & popping it would not satisfy the gdc compiler (not  
>> sure why, maybe becuase signal handlers might need it?)
>>
>> In any case the abi is here
>>
>> http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html#/ 
>> /apple_ref/doc/uid/TP40002492-SW4
>>
>
> The EBX must be preserved across function calls. That's the only  
> restriction on its use. Whether within a function it is used as a  
> base register or not is relevant only to that function, and is not  
> part of the ABI.
>
> dmd regenerates the base register contents as required.

ok good, I just know that gdc (actually the underlying asm backend)  
did not allow any change to the EBX, which I found surprising, becuase  
if one doesn't perform any call or access globals I though safe to  
clobber the global offset table...
As gcc/gdc did not allow it I wondered if there were hidden pitfalls  
into it...




More information about the dmd-beta mailing list