将 C 和汇编编译为纯机器代码?

标签 c assembly binary

我现在真的很困惑......

诸如 vmlinuz 二进制文件、MBR 和 BOOTMGR 镜像之类的可启动文件都是用纯二进制/机器代码编写的。但它们是从 C 和汇编语言编译而来的 - 即 Linux 内核源代码不仅仅由 1 和 0 组成,它由 C 源代码组成。我如何获取汇编和 C 程序并将它们编译为通用 x86(在我的例子中是 x86-32)微处理器范围的机器代码,以便我可以从这些文件启动。

最佳答案

对于此类事情有一个很棒的资源:OSDev .

特别查看 Bare bones页面:它引导您完成创建、构建和运行用汇编语言和 C 语言编写的极简“内核”的过程。

另请参阅Baby steps有关如何构建引导扇区的页面。

关于将 C 和汇编编译为纯机器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6716489/

相关文章:

c++ - Linux网络编程。我可以从什么开始?

delphi - Delphi 的 x86 代码生成器框架

binary - Scheme 中二进制列表的乘法

php - 使用Python插入MySQL二进制(8)字段

javascript - 从字符串转换为 0 和 1,以及从 0 和 1 转换为字符串的有效方法?

c - 解释 getaddrinfo( ) 的参数

c - 指针数组 Malloc(C 编程)

c - 使用没有netcat的dup2通过套接字将shell从客户端重定向到服务器

iphone - ARM/iOS 处理器上相当于 'int 3'

android - Android 中的 SYSCALL_INLINE