1

对于我的大学最后一年的论文,我要实现对C编程语言的骨骼形式的编译器,然后去延伸它,直到它像什么更像Java,有数组边界检查,类型检查等等。生产可执行文件在Linux(相对于执行编译)

我在太多,涉及到编译器构造,并在MIPS汇编语言编程经验理论的比较能干,所以我明白一点的是写非常低级别的代码是什么。

我的主要担忧是我很可能一直到我需要生成实际机器代码输出的地步,但却不能充分理解机器代码如何从运行它的操作系统。

所以,我的实际问题基本上是,“没有人知道最好的地方,读了关于编写汇编对linux下一个Intel的x86-64处理器上运行?”

我所知道的主要缺陷是机器代码在实际中如何运行。它是直接在处理器上运行,使“系统调用” S(或86等价物)时,出于某种原因需要内核提供的服务,或者是汇编语言封装的描述,告诉内核如何执行指令(以类似于诸如Java的解释性语言的方式)?

任何帮助,你可以提供将不胜感激。

+0

可能重复http://stackoverflow.com/questions/1575948/advice-for-learning-linux-x86-64-assembly-documentation) – bdonlan

+0

我也要读一下,谢谢你的帮助:) –

+0

你可能想要谷歌关于ELF文件格式 –

回答

1

首先,对机器代码从这里开始:http://www.intel.com/products/processor/manuals/

接下来,我想你对机器代码运行如何实际上是关于操作系统如何加载exe文件到内存中,并呼吁主要问题()?这些链接可以帮助

链接器和加载: http://www.linuxjournal.com/article/6463

ELF文件格式: http://en.wikipedia.org/wiki/Executable_and_Linkable_Formathttp://www.linuxjournal.com/article/1060

你的机器代码将进入可执行文件的.text段

最后,祝你好运。您的项目与我的最后一年项目类似,只是我定位了JVM并编译了Visual Basic的一个子集!

+0

针对JVM实际上可能是一个更好的主意......因为然后我有一个标准的机器语言,我可以在任何系统上演示我的编译器......嗯,谢谢你的回答,我会有一个想法。 (我的项目的具体细节尚未确定,目前的标题仅仅是“Haskell中的C的编译器”) –

相关问题