编译原理

高级语言,如C语言等                          A             .c ,   .cpp

中级语言,如汇编语言(目标代码)    B               .obj

低级语言:机器码(可执行文件)        C            .so,     .exe

A→B 或 A→C                    称为编译

B→C                                  称为汇编

高级语言的编译类似语言的翻译一样:词法分析→语法分析→语义分析→中间代码生成→代码优化→目标代码生成→机器语言

一般来说语义分析和中间代码生成是一起完成的,合起来称为语法制导翻译。

编译过程中就可以确定需要存储空间大小的称为静态内存分配,执行时才能确定存储空间大小的称为动态内存分配。

静态动态分别对应的是编译过程执行过程,动态内存部分又分为栈,堆。

全局变量显然是静态存储空间。类和方法对应的存储是按整个过程分配的,称为动态记录。

语言可分为两种:一种是方法中可以嵌套方法的,如pascal;另一种则是不可以的,如C。

预处理过程:包括宏替换和注释、空格等的删除。

符号表:用来对应各种操作的操作符。寄存器,cpu附近最快的存储空间,很小,独立于内存之外。

因此选择将哪些操作变量放到寄存器中就很重要了。

原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725245.html