ffcall

Ken Brown kbrown@cornell.edu
Thu Feb 19 16:45:00 GMT 2015


On 2/19/2015 10:43 AM, Reini Urban wrote:
> On 02/19/2015 10:38 AM, Corinna Vinschen wrote:
>> On Feb 18 17:41, Ken Brown wrote:
>> Help with basic x86_64 assembler is ok, I did it for Cygwin with help
>> from Kai Tietz.
>>
>> The main difference to Linux you have to look out for is the different
>> calling convention and how the registers are used:
>> http://en.wikipedia.org/wiki/X86_calling_conventions#Microsoft_x64_calling_convention
>>
>> So the job is typically to rearrange the register usage and to
>> account for the only four registers used for the first arguments
>> to a function, rather than the 6 registers in the SYSV ABI.
>>> I might give it a try at some point, but I'm not highly motivated unless
>>> someone who really cares about clisp steps forward to help.  I'll
>>> concentrate first on seeing if I can get some 64-bit version of clisp built
>>> without ffcall.
> Should be doable without.

Yes, it seems to be.  So far I've built and am testing a version with no 
non-default modules, and with the default regexp module disabled.  I had 
to do the latter because of the gcc problem I encountered while trying 
to compile regexi.c:

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64939

The same sort of error occurs with several other modules.

> In the meantime I started here:
> https://github.com/rurban/ffcall/tree/win64 with a win64 port, time permits.

Thanks!!

> win64 also needs 32byte shadow stack space to spill rcx, rdx, r8 and r9.
> libffi added win64 and cygwin64 support recently, but ffcall is easier to
> understand, and faster.

Ken



More information about the Cygwin-apps mailing list