学习编程语言的工作原理

Rex*_*exE 14 compiler-construction interpreter

我已编程多年(主要是Python),但我不明白编译或执行代码时幕后发生的事情.

在的静脉问题我刚才问了一下操作系统,我要找一个温柔的介绍编程语言的工程.我希望能够定义和理解编译器,解释器,本机代码,托管代码,虚拟机等术语的基础知识.什么是一个有趣和互动的方式来了解这一点?

Too*_*the 12

简而言之,执行代码

程序(代码)被送入编译器(或解释器).

字符用于形成标记(+,标识符,数字),它们的值存储在称为符号表的某些内容中.

这些标记放在一起形成语句:(int a = 6 + b*c;).主要是语法树的形式:

                     =
                    / \
                   /   \ 
                  a     +
                       / \
                      /   \
                     6     *
                          / \
                         b   c
Run Code Online (Sandbox Code Playgroud)

在解释器中,树直接执行.

使用编译器,树最终被转换为中间代码或汇编代码.

您现在有一个或多个"目标文件".它们包含没有精确跳转的汇编程序代码(因为这些值尚不清楚,特别是如果目标位于其他目标文件中).目标文件通过链接器链接在一起,链接器填充跳转的空白(ans引用).链接器的输出是库(也可以链接)或可执行文件.

如果启动可执行文件,程序数据将被复制到内存中,还有一些其他链接可以将指针与正确的内存位置相匹配.然后控制第一条指令.