This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ffcall


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]