创建一个使用 2 个不同 ISA 的程序

标签 c gcc

新人你好(温柔一点),

我正在尝试编写一个包含浮点代码的程序。然而这个程序需要在两个不同的处理器上运行。除了浮点模型外,它们具有大致相同的 ISA。他们使用完全不同的指令和寄存器来进行浮点计算。有什么优雅的方法可以让 gcc 为一个处理器的模型编译一段代码,并为另一个处理器的模型编译另一段代码?我已经有了一种方法来确定代码当前在哪个处理器上运行,因此我可以将其链接到内存中相应的代码。

一切都是用 C 语言完成的。出于好奇,我使用的是 powerpc e500v2 和 e300 内核。

这不是一个家庭作业问题,没有老师会因为这个而在互联网上感到不安。

最佳答案

使用不同的 GCC 选项构建两个不同的 .o 文件。

我假设您正在谈论足够兼容以共享 ELF 文件的代码,例如 x87 与 SSE2 浮点,而不是 x86 和 x86_64 或像 ClearSpeed 这样的奇怪东西。

关于创建一个使用 2 个不同 ISA 的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980765/

相关文章:

C - 双自由

c - C Char 数组中的十进制到二进制

c - 使用 dlfcn.h 库函数时出现无效的 ELF header 错误

c++ - 将 make_shared 与构造函数一起使用时,gcc 4.7.3 内部编译器错误

c++ - const 的奇怪使用 - 为什么编译?

c - 当我们不知道可用内存的大小时,如何实现伙伴分配器?

objective-c - 返回 C 数组和内存管理

c - 运行从代码生成的二进制文件是否具有 "constraint violation"实际上未定义的行为?

c - 为什么我缺少终止“字符?

object - 汇编/编译文件的最纯净方法,没有其他ELF/对象膨胀