We could still use GCC only on linux. But we'd have to be careful that yasm still got built on MinGW.
Bill. On 22 May 2012 15:19, Bill Hart <goodwillh...@googlemail.com> wrote: > Well spotted. Indeed, MinGW64 uses the Windows assembly code, not the > linux assembly code. So indeed, for MinGW support, we probably have > little choice but to use a portable assembler. So it looks like we are > stuck with Yasm, unless we wanted to duplicate all the Windows > assembly code (something I personally don't want to do). > > Bill. > > On 22 May 2012 15:14, Brian Gladman <b...@gladman.plus.com> wrote: >> On Tue, 22 May 2012 14:37:26 +0100 >> Bill Hart <goodwillh...@googlemail.com> wrote: >> >>> I agree with that explanation. However, I should add that it is >>> largely for historical reasons. >>> >>> MPIR originally planned to support MSVC out-of-the-box (as did Sage >>> once). One reason for this is that many Windows developers use MSVC. >>> Brian Gladman has been successfully providing that ability (actually >>> from before the MPIR fork began). And it seems to be widely used. >>> >>> And one aspect of the plan to support MSVC is to use a portable >>> assembler. For a while, the same code was used for Windows and Linux. >>> But it became impossible to maintain, so we gave up and separated it. >>> >>> These days things look different to the way they did back then. >>> MinGW64 is available providing even assembly support on Windows 64. >>> And oddly enough, MSVC doesn't support 64 bit inline assembly. So >>> actually, MinGW64 has turned out to be a much more serious option in >>> the long run. That wasn't predictable when we started work on the MPIR >>> fork. >> >> However, for MPIR the lack of in-line assembly support is not a >> big issue since the vast majority of the assembler code is provided as >> fully self standing assembler routines. >> >> What is more difficult is the change in the ABI and the extent to which >> mingw64 supports the Windows ABI. As I don't use mingw64, I don't know >> the answer here but I suspect that exception handling support might not >> be fully compliant (I would be pleased to be proved wrong about this). >> >> I am also unclear when MPIR assembler code is used with mingw64, which >> actual assembler code is used. If it is my Windows assembler code (in >> x86_64w) there is no guarantee that it will work as I design this only >> to comply with the ABI as offerred by the Microsoft and Intel >> compilers, not GCC. It might well work with GCC to some extent but I >> don't do anything to ensure this. >> >>> Another issue was that many assembly programmers such as myself, who >>> grew up on Windows, use Intel format, rather than AT&T format. >>> Unfortunately, GCC's support for this is flaky. We anticipated drawing >>> from the large pool of assembly expertise amongst Windows developers, >>> and felt that using Yasm (with Intel format) would be more attractive. >>> Unfortunately, only Brian Gladman has been contributing Windows >>> assembly code, and on linux, pretty much only Jason Moxham has been >>> contributing. But he prefers AT&T code. >>> >>> Given that there are a large number of people using the MSVC support >>> in MPIR, I don't think we can change this in the near term. However, >>> it would be possible to switch to solely using GCC on linux and not >>> Yasm. But someone would have to commit the time to porting all the >>> code across. If you can find someone willing to do that, then provided >>> no performance regressions, I'd support doing that. We could then >>> ditch building Yasm on Linux, which would save some headaches for >>> Sage. >> >> The use of YASM was a compromise between Unix/Linux and Windows >> needs. The logic if we give up this compromise is to use the native >> assemblers - GAS on Unix/Linux and MASM on Windows. But whether >> mingw64 could then use the Unix/Linux GAS assembler code or the Windows >> MASM assembler code is something that would have to be considered. >> >> Nevertheless the need to add YASM for building on Windows instead of >> the native assembler (MASM) involves significant compromises which >> would be removed if I switched to MASM. >> >> Maybe a mingw64 user (or guru) could clarify what ABI (including >> exception handling and stack unwinding support) is used on mingw64 and >> which MPIR assembler code is used when MPIR is built with x64 assembler >> support? >> >> Brian >> >> -- >> You received this message because you are subscribed to the Google Groups >> "mpir-devel" group. >> To post to this group, send email to mpir-devel@googlegroups.com. >> To unsubscribe from this group, send email to >> mpir-devel+unsubscr...@googlegroups.com. >> 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 mpir-devel@googlegroups.com. To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.