小编use*_*846的帖子

编译C并将ASM组装成机器码

我有三个问题:

  1. 我可以使用什么编译器以及如何使用它将 C 源代码编译成机器代码
  2. 我可以使用什么汇编程序以及如何使用它将 ASM 汇编为机器代码
  3. (可选)您建议如何将机器代码放置在正确的地址中(即引导加载程序机器代码必须放置在引导扇区中)?

我的目标: 我正在尝试制作一个基本的操作系统。这将使用个人制作的引导加载程序和内核。我也会尝试从 Linux 内核(即驱动程序)中获取一些零碎的东西,并将它们集成到我的内核中。我希望创建一个 32 位类似 DOS 的操作系统来处理大多数现代计算机上的内存。我认为我不会为我的操作系统创建可执行格式,因为我的操作系统不会动态到需要它。

我的情况: 我在带有 Intel Celeron CPU 的 x86-64 windows 8 笔记本电脑上运行;我相信它使用安全启动。我将在带有 Intel Core I3 CPU 的 x86-64 台式机上测试我的操作系统。我对操作系统及其技术有一般的了解。我知道这个项目所需的 C、ASM 和计算机理论。我认为值得一提的是,我 16 岁,没有接受过计算机科学方面的正规教育。

我的研究:在谷歌搜索 C 通常编译成的内容后,我找到了机器代码、二进制、纯二进制、原始二进制、汇编和可重定位目标代码的答案。据我所知,程序集通常会组装成 PE 格式的可执行文件。我听说过 Cygwin、GCC C 和 MingW C 编译器。至于汇编程序,我听说过 FASM、MASM 和 NASM。我搜索过OSDevOSDever等网站。

我尝试过的:我尝试设置 GCC(一个噩梦)并创建一个交叉编译器(另一个噩梦)。

结论:如您所知,我对编译器、汇编器和可执行格式感到困惑。请消除我的无知并回答我的问题。这些可能是唯一让我无法在简历上安装操作系统的原因。抱歉,我会包含更多链接,但是 stackoverflow 不会让我创建两个以上的链接。万分感谢!

c assembly compilation machine-code

5
推荐指数
1
解决办法
6828
查看次数

标签 统计

assembly ×1

c ×1

compilation ×1

machine-code ×1