【问题标题】:How to use GCC to compile C code to 8088 Assembly?如何使用 GCC 将 C 代码编译为 8088 程序集?
【发布时间】:2011-09-08 09:41:28
【问题描述】:

我一直在寻找一条信息,但似乎找不到它,也许你们可以帮我一把。这是一个简单的问题:

  • 如何使用 GCC 将 C 代码编译成 8088 程序集?

我正在用8088汇编编写一个小程序,想知道编译器是如何完成一些事情的,这真的很棒。

谢谢!

【问题讨论】:

  • 标题说8088,标签说8086,你需要哪一个?
  • 显然 DJ Delorie 有a patch这不适合普通程序员。
  • @WTP,8086/8088 之间的确切区别是什么(除了总线、指令队列等)。标签没问题。
  • @BeOliveira 如果它可以在本地完成,则不需要补丁。
  • @BeOliveira 是的,尝试找到一个旧的 DOS C 编译器 - 也许是 Turbo C。

标签: c gcc compiler-construction assembly


【解决方案1】:

-S 标志产生汇编程序输出,但现在 8088 不是这样。

gcc -S myfile.c

输出将在 myfile.s 中。

【讨论】:

  • 我知道,我知道,但是我的老师告诉我,我可以使用 gcc 生成 8088 程序集,而这正是我所需要的。仅适用于 16 位寄存器且仅限于 8086/8088 系列处理器的代码。
  • @BeOliveira 好吧,显然你应该问问你的老师怎么做——这就是他们得到报酬的原因。
  • 嗯,是的,但这是周末,我无法联系到他,仍然需要这样做。另外,我在问你们,希望有人可以帮助我。
  • @BeOliveira 据我所知,标准的 GCC 发行版无法生成 8088 代码。搜索时,GCC 手册中肯定没有与“8088”匹配的内容。
  • 我怀疑你的导师想要 80386 组装,但不明白 8088 不是一回事......很多 CS 导师不称职。
【解决方案2】:

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

【讨论】:

  • -mtune 只是优化,-march 是你在说的。
  • 我想知道在这种情况下查找和运行旧版本的 gcc 是否可以接受
【解决方案3】:

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

【讨论】:

  • 是的,我可以考虑其他编译器,并且一定会看看 OpenWatcom。非常感谢您提供这方面的建议!
【解决方案4】:

有一个16位的djgpp版本(基于gcc),据说可以产生8086/88码here

【讨论】:

  • 好吧,结束这个话题,我会接受当前版本的 gcc 生成 8086/88 汇编代码,我唯一的选择是使用 djgpp 插件其他编译器,正如你们许多人所建议的那样。虽然第一个告诉我关于 djgpp 的插件的是 @pmg,但我将 this 标记为接受的答案,因为我 无法标记他的。非常感谢所有帮助我的人!祝大家有美好的一天!
猜你喜欢
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 2011-08-05
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多