如何使用GCC将C代码编译为8088汇编?

10

我一直在寻找一些信息,但似乎找不到,希望你们能帮我一下。问题很简单:

  • 如何使用GCC将C代码编译成8088汇编?

我正在编写一个小程序,使用8088汇编语言,想知道编译器是如何完成某些操作的,这对我来说非常重要。

谢谢!


2
标题说的是8088,标签却是8086。你需要哪一个? - user142019
2
显然DJ Delorie有一份补丁:这不适用于普通程序员。 - pmg
2
@WTP,除了总线、指令队列等方面,8086/8088之间的确切区别是什么?标签没问题。 - bestsss
1
如果它可以本地完成,就不需要补丁了。 - user2100815
1
@BeOliveira 是的,请尝试寻找一款旧的DOS C编译器,比如Turbo C。 - user2100815
显示剩余17条评论
4个回答

2

GCC允许使用-mtune = cpu-arch指定目标机器架构,但现在不支持i8088。 支持的架构是i386和更新的架构。


4
-mtune只是优化选项,而你所说的应该是-march - rubenvb
我想知道是否找到并运行较旧版本的gcc在这种情况下是可接受的。 - don bright

2

如果您考虑其他编译器,始终可以选择OpenWatcom,它既是开源的,又可以生成16位代码。


是的,我可以考虑其他编译器,并且一定会看看_OpenWatcom_。非常感谢您提供这个提示! - Bernardo Oliveira

2

有一个16位版本的djgpp(基于gcc),据说可以生成8086/88代码,这里是下载链接。


好的,为了结束这个话题,我接受当前版本的gcc 不会生成8086/88汇编代码,并且我的唯一选择是使用_djgpp插件_或_其他编译器_,正如你们中的许多人建议的那样。虽然第一个告诉我关于_djgpp_插件的是**@pmg**,但我将_this_标记为被接受的答案,因为我无法标记他的答案。非常感谢帮助我的每个人!祝大家有美好的一天! - Bernardo Oliveira

1

-S 标志生成汇编输出,但如今不适用于 8088。

gcc -S myfile.c

输出将会在myfile.s文件中。


我知道,我知道,但我的老师告诉我我可以用gcc生成8088汇编,这正是我所需要的。这段代码仅适用于16位寄存器,并且仅限于8086/8088系列处理器。 - Bernardo Oliveira
2
@BeOliveira 嗯,显然你应该问你的老师如何做 - 这就是他们得到报酬的原因。 - user2100815
@Neil 是的,我也意识到了,但仍然希望有一种方法可以做到这一点... - Bernardo Oliveira
1
我怀疑你的教练想要80386汇编,而不是8088汇编......很多计算机科学教练都不称职。 - R.. GitHub STOP HELPING ICE
@R.. 我不确定这是否正确,因为我们正在处理为8086/8088处理器编写的程序,他告诉我可以这样做,以查看C程序如何编译到那些处理器上,而不是gcc现在编译到x86 32位处理器上。他实际上是一位很好的老师,所以当你们告诉我本地不可能时,我感到困惑。 - Bernardo Oliveira
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接