Hello, I'm currently hacking on a small linker for 16Bit NE executables.
My current main issue is that clang doesn't seem to support the 16Bit calling convention 'pascal' properly. Consider the following code sample: ######## static void __pascal test2(short s1, short s2, short s3, short s4) { } test2(1, 2, 3, 4); ######## That compiles to ######## mov DWORD PTR [esp],0x1 mov DWORD PTR [esp+0x4],0x2 mov DWORD PTR [esp+0x8],0x3 mov DWORD PTR [esp+0xc],0x4 mov DWORD PTR [esp+0x10],eax call 120 <test2> ######## AFAIK __pascal should push the arguments in the other order, and not as 4 bytes each. OpenWatcom, that generates real 16Bit code, pushes only 2 byte each. Is there away to get fake 16Bit code generated that follows that calling convention so interfacing with real 16Bit code is possible? Regards, Fabian Maurer _______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users