【发布时间】:2011-07-04 23:43:53
【问题描述】:
在我的大学毕业论文中,我将为 C 编程语言的骨架形式实现一个编译器,然后继续对其进行扩展,直到它类似于带有数组边界检查、类型 - 的 Java检查等等。
我比较能胜任编译器构造相关的大部分理论,并且有使用 MIPS 汇编语言编程的经验,所以我对编写极低级代码是什么有点了解。
我主要担心的是,我可能能够一直到需要生成实际机器代码输出的地步,但从运行它的操作系统。
所以,我的实际问题基本上是,“有没有人知道最好的地方来阅读关于编写程序集以在 linux 下的 intel x86-64 处理器上运行?”
我所知道的主要差距是机器代码是如何在实践中实际运行的。它是直接在处理器上运行,当它需要内核提供的服务时进行“系统调用”(或 x86 等价物),还是汇编语言以某种方式是一种封装描述,告诉内核如何 em> 执行指令(以类似于 Java 等解释性语言的方式)?
您能提供的任何帮助将不胜感激。
【问题讨论】:
-
我也会读一下,谢谢你的帮助:)
-
你可能想谷歌一下 ELF 文件格式
-
您是要直接发出 ELF 可执行文件,还是可以与其他库链接的目标文件?后一个选项更强大,因为链接到 glibc 和其他汇编程序、C 和 C++ 模块意味着您根本不用担心系统调用。
-
你是想直接发出一个 ELF 可执行文件,还是一个可以与其他库链接的目标文件?事实上,在阅读之后我也不确定其他用户的建议,我倾向于让我的编译器生成一个 ELF 可执行文件。但我对两者的优势/特点还不够了解,无法做出明智的选择。我对可执行文件几乎一无所知,直到现在,知道我为给定语言所用的编译器制作了一个就足够了,而不是它们实际上是如何工作的
标签: linux compiler-construction assembly linux-kernel compiler-theory