高级语言,如C语言等 A .c , .cpp
中级语言,如汇编语言(目标代码) B .obj
低级语言:机器码(可执行文件) C .so, .exe
A→B 或 A→C 称为编译
B→C 称为汇编
高级语言的编译类似语言的翻译一样:词法分析→语法分析→语义分析→中间代码生成→代码优化→目标代码生成→机器语言
一般来说语义分析和中间代码生成是一起完成的,合起来称为语法制导翻译。
编译过程中就可以确定需要存储空间大小的称为静态内存分配,执行时才能确定存储空间大小的称为动态内存分配。
静态、动态分别对应的是编译过程和执行过程,动态内存部分又分为栈,堆。
全局变量显然是静态存储空间。类和方法对应的存储是按整个过程分配的,称为动态记录。
语言可分为两种:一种是方法中可以嵌套方法的,如pascal;另一种则是不可以的,如C。
预处理过程:包括宏替换和注释、空格等的删除。
符号表:用来对应各种操作的操作符。寄存器,cpu附近最快的存储空间,很小,独立于内存之外。
因此选择将哪些操作和变量放到寄存器中就很重要了。