如何让 Watcom 编译器(在 64 位主机上运行的分叉版本 2.0 测试版)在 ASM 文件中输出 8086 汇编源代码?从命令提示符运行wcc -0 main.c只会生成 OBJ 文件。
附带说明一下,我的主要任务是将 C 源代码转换为可以使用 EMU8086 运行的汇编代码(而不是编写实际的汇编代码)。我希望 Watcom 生成的 ASM 文件无需修改(复制粘贴)即可在 EMU8086 中运行。
我没有看到让 Watcom 编译器直接生成 ASM 文件的方法,但您应该能够使用 Watcom 反汇编器 ( wdis
) 从编译器生成的目标文件生成汇编列表。在这种情况下,您将运行类似wdis -l main
读取main.obj
并生成一个名为的文件,该文件main.lst
包含一个汇编语言列表。
如果您使用-d1
or-d2
选项重新编译 main.c 以将额外的调试数据放入 main.obj 文件中,那么您可以使用反汇编程序的-s
选项让汇编语言列表与显示原始 C 源代码的注释穿插在 .obj 文件中main.c
。
要让反汇编器省略描述性注释并只给出一个可以作为 Watcom 汇编器源文件接受的简单反汇编,请给-a
反汇编器选项。此选项还将导致反汇编程序的输出被写入main.asm
而不是main.lst
. 对不起,我不知道这个输出是否会被 EMU8086 直接消耗。
这在 Open Watcom C/C++ 用户指南和C/C++ 工具用户指南中都有讨论,链接自http://www.openwatcom.com/doc.php