这是一个简短的 C 文件cu.c
:
int main(int argc, char **argv) {
(void)argc; (void)argv;
return 0;
}
当我使用 OpenWatcom 将其编译为 DOS .com 文件时,结果几乎是 3 KiB:
$ owcc -bcom -mcmodel=t -fno-stack-check -Os -s -march=i86 -W -Wall -Wextra -o cu.com cu.c
$ ls -l cu.com
-rwxr-x--- 1 pts pts 2938 Jun 20 19:26 cu.com
执行相同操作(只是退出)的最小可能的 DOS .com 文件是 1 字节长:它包含一条ret
指令(字节 0xc3)。
如何cu.c
在没有 OpenWatcom C 库 (libc)(最好小于 100 字节)的情况下将我的文件(可能进行一些修改,我不关心 argc 或 argv)编译为较小的 DOS .com 文件?我将直接从我的程序中调用 DOS API 函数 ( int 0x21
),因此我不需要任何 OpenWatcom C 库函数。
请注意,带有 Open Watcom 的 COM 可执行文件不能回答我的问题,因为那里提供的解决方案都包括 OpenWatcom C 库。