编译原理
一些编译原理知识
Nod_Mouse
这个作者很懒,什么都没留下…
展开
-
c语言存储区-堆栈静态存储区
栈 由编译器自动分配释放,其中存放在主调函数中被调用函数的下一句代码、函数参数和局部变量,容量有限 堆 由程序员自己分配释放(用malloc和free,或new和delete) ,如果我们不手动释放,那就要到程序结束才释放。如果对分配的空间在不用的时候不释放而一味的分配,那么可能会引起内存泄漏,其容量取决于虚拟内存,较大。 静态存储区 { 由在编译时由编译器分配,由系统释放,其中存放的是全局变量、static变量和常量. 程序代码区 存放函数体的二进制代码 数据段 1.只读数据段:是程序使用的一些不会被修改原创 2021-03-11 10:43:23 · 326 阅读 · 0 评论 -
编译过程
一、词法分析 将源代码通过扫描器转换为记号 二、语法分析 将记号进行语法分析得到语法树(不能理解这个语句是否真的有意义) 三、语义分析 用语义分析器分析语义,只能分析静态语句 四、中间语言生成 通过源码级优化器优化掉编译期可以确定的值,得到中间代码(通常得到三地址码格式x=y op z) 五、目标代码生成和优化 通过代码生成器和目标代码优化器将中间代码转换为目标机器代码,然后通过优化器优化 到这一步,目标代码如果有变量定义在其他文件之中,其绝对地址都是在最终连接的时候才能确定的。 因为在很久之前,每次当代码原创 2021-03-11 10:42:49 · 55 阅读 · 0 评论