我已经编程多年(主要是Python),但我不明白当我编译或执行代码时幕后发生了什么。
本着question https://stackoverflow.com/questions/1514812/gentle-introduction-to-operating-systems我之前问过有关操作系统的问题,我正在寻找对编程语言工程的简单介绍。我希望能够定义和理解编译器、解释器、本机代码、托管代码、虚拟机等术语的基础知识。什么是一种有趣且互动的方式来了解这一点?
简而言之,要执行的代码
程序(代码)被输入编译器(或解释器)。
字符用于形成标记(+、标识符、数字),它们的值存储在称为符号表的东西中。
这些标记放在一起形成语句:(int a = 6 + b * c;)。主要采用语法树的形式:
=
/ \
/ \
a +
/ \
/ \
6 *
/ \
b c
在解释器中,树是直接执行的。
通过编译器,树最终被翻译成中间代码或汇编代码。
您现在拥有一个或多个“目标文件”。它们包含没有精确跳转的汇编代码(因为这些值尚不清楚,特别是如果目标位于其他目标文件中)。
目标文件通过链接器链接在一起,该链接器填充跳转(引用)的空白。链接器的输出是一个库(也可以链接)或一个可执行文件。
如果启动可执行文件,程序数据将被复制到内存中,并且还有一些其他链接处理将指针与正确的内存位置相匹配。然后将控制权交给第一条指令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)