【发布时间】:2018-05-12 07:01:51
【问题描述】:
如何让 Watcom 编译器(在 64 位主机上运行的分叉版本 2.0 测试版)在 ASM 文件中输出 8086 汇编源代码?从命令提示符运行 wcc -0 main.c 只会生成 OBJ 文件。
附带说明一下,我的主要任务是将 C 源代码转换为可以使用 EMU8086 运行的汇编代码(而不是编写实际的汇编代码)。我希望 Watcom 生成的 ASM 文件在 EMU8086 中无需修改(复制粘贴)即可运行。
【问题讨论】:
如何让 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 或 -d2 选项重新编译 main.c 以将额外的调试数据放入 main.obj 文件,那么您可以使用反汇编程序的 -s 选项让汇编语言列表与 cmets 显示来自main.c的原始C源代码。
要让反汇编器省略描述性 cmets 并只给出一个可以作为 Watcom 汇编器源文件的普通反汇编,请为反汇编器提供 -a 选项。此选项还将导致反汇编程序的输出写入main.asm 而不是main.lst。抱歉,我不知道这个输出是否会被 EMU8086 直接消耗。
这一切都在 Open Watcom C/C++ 用户指南 和 C/C++ 工具用户指南 中进行了讨论,链接自 http://www.openwatcom.com/doc.php
【讨论】: