【问题标题】:What happens to the binaries generated after compilation [closed]编译后生成的二进制文件会发生什么[关闭]
【发布时间】:2018-05-07 13:27:42
【问题描述】:

我为我的微控制器创建了一个十六进制文件,并将其刻录到微控制器上。 当我创建控制台 C 程序并尝试在我的 PC 上运行它时,我的 PC 操作系统是否与编译后生成的二进制文件类似?在这种情况下,目标是我 PC 的微处理器。

【问题讨论】:

标签: c process operating-system microcontroller


【解决方案1】:

不,它不相似。当您针对 µc 进行编译时,您的编译器通常会准确地发出在此控制器上运行的机器代码。

以现代操作系统为目标,编译器也会发出机器代码,但会将其放入包含大量元信息的文件中,格式取决于目标操作系统(例如 PE(= 可移植可执行文件)用于 Windows,ELF 用于 Linux 和其他 *nix 系统)。这些元信息包含诸如

  • 程序中的确切入口点(而 naked 二进制文件只会从第一个字节开始执行)
  • 可能是重定位信息(如果从不同地址执行,代码中必须更改的内容)
  • 运行时链接库所需的符号表,因此可以将库函数的地址修补到可执行文件中
  • [...]

此可执行文件随后由您的操作系统加载并在任何执行开始之前进行解释。

【讨论】:

  • 这意味着我可以编辑代码这样我可以编辑中断的优先级并且可以玩核心外设。
  • 对不起,什么? :o
  • 我是否有权通过更改二进制文件(或创建此类二进制文件)来更改处理器的日常工作。例如 DMA , PCI 总线
  • 我不知道您在说什么:o 在 µc 上,您通常没有操作系统,因此您可以随心所欲地使用硬件。我的印象是你在问 PC 操作系统的可执行文件是如何工作的。当然,操作系统对硬件具有独占控制权!
  • 谢谢,我现在知道了。是的,我问的是 PC OS 的可执行文件。再次感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2012-05-23
相关资源
最近更新 更多