学习编程语言的工作原理

2024-01-06

我已经编程多年(主要是Python),但我不明白当我编译或执行代码时幕后发生了什么。

本着question https://stackoverflow.com/questions/1514812/gentle-introduction-to-operating-systems我之前问过有关操作系统的问题,我正在寻找对编程语言工程的简单介绍。我希望能够定义和理解编译器、解释器、本机代码、托管代码、虚拟机等术语的基础知识。什么是一种有趣且互动的方式来了解这一点?


简而言之,要执行的代码

程序(代码)被输入编译器(或解释器)。

字符用于形成标记(+、标识符、数字),它们的值存储在称为符号表的东西中。

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

                     =
                    / \
                   /   \ 
                  a     +
                       / \
                      /   \
                     6     *
                          / \
                         b   c

在解释器中,树是直接执行的。

通过编译器,树最终被翻译成中间代码或汇编代码。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习编程语言的工作原理 的相关文章

随机推荐