[fpc-devel] Same 64bit assembly code compiles under windows but not in linux (fpc 260)

luiz americo pereira camara luizmed at oi.com.br
Thu Oct 4 13:54:53 CEST 2012


2012/10/4 luiz americo pereira camara <luizmed at oi.com.br>

>
>
> 2012/10/3 Jonas Maebe <jonas.maebe at elis.ugent.be>
>
>>
>> On 03 Oct 2012, at 03:29, luiz americo pereira camara wrote:
>>
>>
>> at the line
>>         // Load XMM5 with the bias value.
>>        MOVD        XMM5, [Bias]  //Bias = Integer
>>
>> Is it a know issue or a limitation of linux version?
>>
>>
>> Win64 uses a different calling convention compared to every other x86-64
>> operating system (Microsoft probably started working on it before the
>> x86-64 ABI was finalized). One of the differences is that only passes the
>> first three integer parameters in registers, while other operating systems
>> pass the first six integer parameters in registers. This means that on
>> Win64, the above translates into
>>
>>   movd xmm5, [rpb + some_offset]
>>
>> while on other platforms, it translates into
>>
>>   movd xmm5, [r8d]
>>
>> So you are creating a reference with r8d as base register, which is
>> invalid (because it's a 32 bit register)
>>
>>
> Why it compiles and works with fpc 2.6.0 64bit under windows (and also
> Delphi)?
>
>
Forget about the above question

Now i understand

Luiz


>
> Luiz
>
>
>>
>> Jonas
>>
>> _______________________________________________
>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20121004/6a32ee37/attachment.html>


More information about the fpc-devel mailing list