Hello,
2015-01-21 1:14 GMT+08:00 Sergey Korshunoff <[email protected]>: > There is patch for the win32/include/math.h which removes "t", "st" > I wonder why not just have %t,%st implemented? I wrote a small hack for that about half year ago. http://lists.gnu.org/archive/html/tinycc-devel/2014-08/msg00024.html > 2015-01-20 18:25 GMT+03:00, Sergey Korshunoff <[email protected]>: >> Because I don't know how to handle a "t" constraint right, a math.h >> can be rewritten >> like: >> long lrint (double x) >> { >> long retval; >> __asm__ __volatile__ ( >> "fldl %1\n" >> "fistpl %0\n" : "=m" (retval) : "m" (x) ); >> return retval; >> } >> insteed of the >> long lrint (double x) >> { >> long retval; >> __asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); >> return retval; >> } >> >> 2015-01-20 17:43 GMT+03:00, Sergey Korshunoff <[email protected]>: >>> Handling of the "t" spec needs to be improved. I take patch for it >>> from the this mail list (2014) >>> tcc don't load a function parameter into the float stack. >>> There is asm of the gcc and tcc: >>> >>> long lrint (double x) >>> { >>> long retval; >>> __asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); >>> return retval; >>> } >>> >>> gcc: >>> push %ebp >>> mov %esp,%ebp >>> sub $0x4,%esp >>> fldl 0x8(%ebp) # !!! >>> fistpl -0x4(%ebp) >>> mov -0x4(%ebp),%eax >>> leave >>> ret >>> >>> tcc: >>> push %ebp >>> mov %esp,%ebp >>> sub $0x4,%esp >>> fistpl -0x4(%ebp) # where is fldl ??? >>> mov -0x4(%ebp),%eax >>> jmp 14 <lrint+0x14> >>> leave >>> ret >>> >> > > _______________________________________________ > Tinycc-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > _______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
