This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: ffcall
- From: Reini Urban <rurban at x-ray dot at>
- To: cygwin-apps at cygwin dot com
- Date: Thu, 19 Feb 2015 16:43:08 +0100
- Subject: Re: ffcall
- Authentication-results: sourceware.org; auth=none
- References: <54E4DEC2 dot 2060400 at cornell dot edu> <1424287689 dot 3460 dot 19 dot camel at cygwin dot com> <20150218200825 dot GB22849 at calimero dot vinschen dot de> <54E51500 dot 8070200 at cornell dot edu> <20150219093852 dot GA4783 at calimero dot vinschen dot de>
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. In the meantime I started here:
https://github.com/rurban/ffcall/tree/win64 with a win64 port, time permits.
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.