c - 如何将机器代码发送到特定处理器?

标签 c processor machine-code

据我们所知processor有自己的指令集(ex-8085处理器有自己的指令集)。因此使用该处理器执行任何指令 该指令必须是其指令集中的指令之一(意味着我们只能在 8085 处理器上执行属于 8085 指令集的该指令)。

所以这里我的问题是,如果我们编写任何程序(假设我们使用c语言编写程序),那么在使用编译器编译后(正如我们所知,编译器生成可在机器ex..gcc或turbo c上执行的代码)它会生成代码用于在机器上运行,即在处理器上执行的代码(属于该处理器指令集的指令集)。那么我们的编译器如何知道我们正在使用哪个处理器并将整个程序转换为我们的处理器可执行的指令.

示例- 1)如果我们在具有奔腾处理器的机器上安装turbo c。所以如果我们在这台机器上执行我们的c程序,它必须将整个程序转换为属于奔腾处理器指令集的指令集如果我们在具有奔腾处理器的机器上安装turbo c i5处理器则必须将整个程序转换为属于i7处理器指令集的指令集。

那么编译器如何知道我们正在使用哪个处理器以及为什么编译器对于操作系统不同,根据上面的解释,它对于处理器一定是不同的?

(我长期以来一直在寻找这个问题的答案,很抱歉冗长的声明)

最佳答案

某些编译器只能为特定系统生成机器代码。如果你想为不同的系统进行编译,你必须获得不同版本的编译器,或者完全不同的编译器。

其他编译器知道如何为许多不同的处理器进行编译。但除非您另有说明,否则它会假定您想要为正在运行的相同类型的机器生成代码。因此,如果您在 80x86 Linux 上运行编译器,它会生成 80x86 Linux 的机器代码。

编译一种类型的系统并为另一种类型生成代码称为交叉编译。执行此操作时,您必须告诉编译器目标架构是什么。

执行此操作的方式取决于特定的编译器。如果您从 CLI 编译,它可能是命令行选项;如果您使用 GUI,它可能位于设置对话框中。

关于c - 如何将机器代码发送到特定处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49704508/

相关文章:

android - 哪个计算机处理器为 android studio 提供更好的性能? AMD 还是英特尔?

LISP 1.5 lisp 与机器语言有何相似之处?

C++ - 极其奇怪的机器代码行为

c - 为什么fwrite写的东西很奇怪?

c# - 有没有办法在 C# 中限制 API 的处理器资源?

c - 测量二级缓存吞吐量的解密作业

Java线程管理

c++ - 如何使用 Clang 编译、汇编和链接 C++ 文件?

c - 超时功能

c++ - 一个真实帧缓冲区中的多个逻辑缓冲区