The unfortunate part is, yes, the calling conventions are different. The fortunate part is that we already have the i386 ones there (x86-32) and it can't be that different. Yes there are some differences as always with these things (Linux x86 puts all function arguments on the stack, for example, whereas x64 places them in various registers first, then fills the stack) but it isn't insurmountable - an ABI is just an ABI, after all.
And I agree, the PCC source is actually readable with someone with questionable knowledge of compilers (i.e. me). Antony On 05/17/2010 12:12 AM, Bill Hart wrote: > Ah, yes, I forgot all about the Windows calling conventions. Of course > the 64 bit AMD code that gets produced would use linux calling > conventions. > > So there is a "significant" obstacle to porting PCC to win64. Still, > given that the source for PCC is actually readable, it could no doubt > be fixed. > > Thanks for taking a look Antony. > > Bill. > > On 17 May 2010 00:04, Antony Vennard <[email protected]> wrote: >> Hi All, >> >> Regarding BSDNT (BSD Licensed MPIR) I think Bill mentioned targetting >> pcc earlier on in conversation (cl/icc/gcc have also been mentioned as I >> remember it). One thing that was suggested was porting pcc to Win64, >> something I've been having a look at (which is what happens when your >> primary contract is web design... you go LOOKING at compiler source). >> >> Anyway - the Win32 build process is via pcc/os/win32/build.bat which >> targets i386 win32. In terms of building the compiler, most of it >> compiles correctly under MSVC 64 bit (Win7SDK x64 tools) with the >> exception of two parts: >> * ../../../pcc-libs/libpcc/_ftol.asm, a MASM 32-bit "ftol" function >> (float to long I think, from the instructions). This doesn't assemble >> under ml64 which seems to have trouble understanding the ml syntax. >> * ../../../pcc-libs/libpcc/_alloca.asm, an implementation of alloca for >> pcc which allows memory allocation on the stack. >> >> These two pieces seem to hold up the build for the entire project - not >> unsurprisingly, really. >> >> Successfully converting these files to win64 would build us a 64bit PE >> that compiles 32-bit obj. I believe pcc does not link but relies instead >> on external linkers to turn translation units into PE/DLL/LIB as >> necessary. Which means, the missing piece is creating 64-bit objects >> compatible with the win64 ABI. I've not got this far yet as this was a >> two-hour nosey last night. >> >> Thoughts? (Website still in progress) >> >> Antony >> >> -- >> You received this message because you are subscribed to the Google Groups >> "mpir-devel" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/mpir-devel?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.
