18

我正在开发一个嵌入式系统项目,并且遇到了编译器以编程方式嵌入 Paradigm C++ IDE 的问题。我希望能够自动化构建。

处理器是 AMD186ES。我没有使用操作系统 - 只是裸机的东西。我需要从 C++ 生成实模式 16 位 8086 机器代码。

我的谷歌搜索表明 G++ 可以构建这样的代码。

我的问题是:

可以配置 g++ 来构建此机器代码吗?

是否有其他 C++ 编译器也可以做到这一点?

4

10 回答 10

11

您最好的选择可能是OpenWatcom,它包含一个 C++ 编译器。早在 90 年代初到中期,我相信这是最好的 C/C++ 编译器。几年前它是开源的。

于 2008-10-22T22:36:59.783 回答
8

我目前正在使用 gnu as(binutils 的一部分和用于 gcc 的汇编程序),并且我已经成功地使用以下代码组装了 16 位汇编代码:

as <file>
ld --oformat binary -Ttext 0x0 -e start <file>

我的汇编文件从以下开始:

.code16
.globl start
.text
start:

因为它的普通二进制省略了行,

.globl start
start:

只会产生警告,即使平面二进制文件不需要入口点。


我很难学到的东西;

-Ttext 0x0

很关键,否则该.text段被推到 16 位寻址范围之外(不要问我为什么)

我个人还在学习组装,所以这只是我的方式,不一定是最好的方式。


编辑: 如果你正在编写引导代码,你应该改变

-Ttext 0x0

-Ttext 0x7c00

这将抵消您的内存地址,0x7c00因为引导代码通常0x7c00由 BIOS 加载。

于 2012-10-10T23:05:08.670 回答
7

您的芯片供应商(我猜是 AMD)没有指向该芯片的编译器的指针吗?

如果没有,您也许可以使用一些 16 位 DOS 编译器 - 但您将遇到几个潜在的大问题:

  1. 获取不依赖于 BIOS 或 MS-DOS 的编译器库
  2. 调试
  3. 嵌入式系统的链接器通常具有在特定内存区域中定位代码的特定支持。这通常不包含在 DOS 编译器中,但您可能能够找到某种链接器/定位器来为您解决问题。

仍然支持并生成 16 位代码的几个编译器是:

于 2008-10-22T22:42:01.410 回答
7

这个谷歌搜索显示了一系列用于将 gcc 设置为交叉编译器的链接。要使其针对标准 ELF 二进制文件以外的其他内容,您可以使用输出。 此链接讨论排除标准库和自定义输出格式。您可能需要做一些摆弄才能使其正常工作。

作为替代方案,openwatcom.org有一个 Watcom C 编译器的开源版本,它可能也可以做你想做的事情。

于 2008-10-22T22:42:17.510 回答
6

GCC 4.3 有一个补丁:New back end ia16: 16-bit Intel x86

是它的更新。请注意,它可能不太好用,例如,更新后的帖子说:“现在支持构造函数和析构函数,但由于某种原因,它们只适用于 elks 配置。”

这个 Docker 容器有一个构建:https ://registry.hub.docker.com/u/ysangkok/ia16-gcc-rask

我还没有设法制作 DOS 二进制文件:如何组装 GAS 程序集并将其与 Open Watcom C 库链接?

于 2013-05-01T21:03:19.647 回答
5

看看bcc,它是一个 16 位 x86 C 编译器。例如,它也有Debian 软件包

于 2008-10-22T22:48:55.140 回答
4

根据 2014 年的最新版本是Dev86

于 2014-08-24T16:32:55.523 回答
2

不确定,但我认为旧版本的 borland c++ 能够做到这一点。你可以下载版本 5.5 t :祝 好运

于 2008-10-22T22:49:17.950 回答
1

80186 免费 C 编译器:

http://coding.derkeiler.com/Archive/General/comp.arch.embedded/2005-09/msg01063.html

于 2008-10-25T12:16:01.203 回答
0

我已经很久没有看过 Paradigm 的东西了(它们还在吗?)——你确定它们没有编译器的命令行等效项吗?我记得它们是建立在 Borland 的编译器工具链之上的……所以也许 Borland 编译器的旧副本可以解决问题?

-- 啊,再看远一点,我发现Paradigm 还在(www.devtools.com)销售X86 工具。(一定是摇钱树!)

他们的专业产品包括脚本......根据您计划做的工作量,咬紧牙关购买他们的全部产品可能是值得的......

祝你好运。

于 2008-10-22T22:50:58.460 回答