trip report: Tiny C Compiler 0.9.27 (Miscellaneous)
I was chugging along replacing TCC's MSVCRT.DLL dependency with Watcom's libc. I got the compiler to self-host. That was fun!
Then i compiled mawk and the floating point math gave bad results. I traced it to parse_number() in tccpp.c:
} else {
tok = TOK_CDOUBLE;
tokc.d = strtod(token_buf, NULL);
}
I can import strtod() from Watcom's mt7s19.dll, but Watcom's stack calling convention isn't strictly cdecl. The arguments pass in fine, but results are returned in AX:DX where TCC expected them in ST0.
From: i386-gen.c
#define REG_FRET TREG_ST0 /* float return register */
From cguide.pdf:
10.5.2 Returning Values in 80x87-based Applications
When using the stack-based calling conventions with "fpi" or "fpi87", floating-point values are returned in registers. Single precision values are returned in EAX, and double precision values are returned in EDX:EAX
I tried to change TCC to use Watcom's calling convention, but i didn't get it right.
If i read the documentation correctly, it could be easy to write a wrapper DLL. With Watcom's -ecc option, the following wrapper function should automagically translate between cdecl and Watcom's calling convention.
double wtfmath_strtod(const char *s, char **r) {
return strtod(s, r);
}
That's all i have brain juice for today.
Complete thread:
- trip report: Tiny C Compiler 0.9.27 - bencollver, 04.02.2026, 17:02 (Miscellaneous)
![Open in board view [Board]](img/board_d.gif)
![Open in mix view [Mix]](img/mix_d.gif)
- trip report: Tiny C Compiler 0.9.27 - tkchia, 04.02.2026, 17:55
- trip report: Tiny C Compiler 0.9.27 - bencollver, 04.02.2026, 18:48
- trip report: Tiny C Compiler 0.9.27 - Japheth, 04.02.2026, 21:12
- trip report: Tiny C Compiler 0.9.27 - bencollver, 04.02.2026, 21:44
- trip report: Tiny C Compiler 0.9.27 - bretjohn, 05.02.2026, 22:24
- trip report: Tiny C Compiler 0.9.27 - Rugxulo, 05.02.2026, 23:09
- trip report: Tiny C Compiler 0.9.27 - bretjohn, 06.02.2026, 01:59
- trip report: Tiny C Compiler 0.9.27 - Rugxulo, 05.02.2026, 23:09
- trip report: Tiny C Compiler 0.9.27 - bencollver, 04.02.2026, 21:38
- trip report: Tiny C Compiler 0.9.27 - tkchia, 05.02.2026, 16:44
- trip report: Tiny C Compiler 0.9.27 - bencollver, 05.02.2026, 18:34
- trip report: Tiny C Compiler 0.9.27 - bencollver, 05.02.2026, 22:22
- trip report: Tiny C Compiler 0.9.27 - tkchia, 05.02.2026, 23:13
- trip report: Tiny C Compiler 0.9.27 - Rugxulo, 05.02.2026, 23:16
- trip report: Tiny C Compiler 0.9.27 - tkchia, 05.02.2026, 23:18
- trip report: Tiny C Compiler 0.9.27 - tkchia, 06.02.2026, 23:45
- trip report: Tiny C Compiler 0.9.27 - bencollver, 05.02.2026, 22:22
- trip report: Tiny C Compiler 0.9.27 - bencollver, 05.02.2026, 18:34
- trip report: Tiny C Compiler 0.9.27 - tkchia, 05.02.2026, 16:44
- trip report: Tiny C Compiler 0.9.27 - Japheth, 04.02.2026, 21:12
- trip report: Tiny C Compiler 0.9.27 - bencollver, 04.02.2026, 18:48
- trip report: Tiny C Compiler 0.9.27 - bencollver, 11.02.2026, 00:44
- trip report: Tiny C Compiler 0.9.27 - Rugxulo, 11.02.2026, 01:42
- trip report: Tiny C Compiler 0.9.27 - bencollver, 11.02.2026, 02:06
- trip report: Tiny C Compiler 0.9.27 - Rugxulo, 11.02.2026, 01:42
- trip report: Tiny C Compiler 0.9.27 - tkchia, 04.02.2026, 17:55
Mix view