3

我遇到过很多编程语言。他们每个人都有自己的魅力,但也有一些我不喜欢的东西。因此,我正在设计自己的编程语言,并简单地用其他语言实现我喜欢的东西。

在做了一些研究之后,虽然主要是猜测,但我相信我对处理器和操作系统的工作原理有所了解。我设法制作了一个解释器,它以我使用指令指针和一些(虚拟)寄存器制作的自定义格式读取和解释指令,并且目前一直在将代码编译为该格式。

然而,这对我来说似乎很愚蠢,因为我的编译器现在生成一个二进制文件来生成一个二进制文件并解释它,然后解释它。虽然目前的做法确实有一些好处(例如只编译一次并且几乎可以在任何地方运行它),但我很好奇在制作一个实际生成操作系统可以读取的代码的编译器时从哪里开始。

我听说过一些关于 PE 和 ELF 的东西,但一直找不到任何描述这些格式的低层次的东西。大多数事情似乎都是关于它用来做各种事情的伟大概念,但似乎没有任何东西以可理解的方式构造,例如首先 16 位 ...,然后 20 位 ...,然后 28 位 . ..,然后是重定位表,然后是其中的一些指令......意味着......等等。

另外,我使用 C++。

4

1 回答 1

3

这是一篇关于如何为 Windows 创建微小/简单 PE 文件的文章:

http://www.phreedom.org/research/tinype/

该文章链接到为 Linux 创建微小/简单 ELF 文件的指南:

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

他们都有很多关于文件格式的技术细节,他们都提到了 nasm 和类似的工具。我认为实现目标的最佳方式是生成汇编代码并让 nasm 或其他汇编程序创建可执行文件。

于 2012-08-22T14:06:40.883 回答