**

1.了解编译原理

**
神奇的编译原理
神奇的编译原理神奇的编译原理
神奇的编译原理
神奇的编译原理
神奇的编译原理
神奇的编译原理
神奇的编译原理

2.图解编译过程

1.预编译
神奇的编译原理
2.动态说明程序在计算机中的运行
神奇的编译原理
程序如右侧所示
神奇的编译原理
ebp指向栈底,esp指向栈顶。顺序执行或者跳转:执行完eip跳转到指定的位置,该位置需从动态数据区读取
神奇的编译原理
蓝色区域存储的第一格内容是ebp开始时指向的地址神奇的编译原理
对fun函数的处理
神奇的编译原理
程序运行的过程就是不断压栈和清栈的过程,先进先出
fun执行完开始清除,通过main函数地址回到main再继续执行
神奇的编译原理
神奇的编译原理
神奇的编译原理

3.编译原理

1.词法分析
程序可以看成一串非常长的字符,计算机中用ascii码表示
根据跟进规则遍历确定标识符,当能确定的时候,除非空格,从能确定的地方再开始遍历

神奇的编译原理
神奇的编译原理
神奇的编译原理

简单来讲就是和枚举出来的类型进行匹配判断,符合就归为此类,不符合再从能判定不符合的地方继续进行匹配判断
神奇的编译原理
神奇的编译原理
判断字母和数字的过程
神奇的编译原理
右侧是执行程序 switch语句表示
神奇的编译原理
神奇的编译原理
动态想象
神奇的编译原理
回顾

2.语法分析

编译全过程
神奇的编译原理
神奇的编译原理
根据一系列枚举出来的语法规则进行匹配判断,从而归类
神奇的编译原理
存储类型static和extern两类,int不符合,pass
神奇的编译原理
如果遇到变换无穷的怎么用匹配判断?如if-else大量嵌套语句
神奇的编译原理
用产生式解决
神奇的编译原理
陷入了循环(左递归),召唤T1,T2兄弟
神奇的编译原理
神奇的编译原理
神奇的编译原理
以上为int fun在产生式系统中的判断
用以上的方式进行判断心累,因为匹配不成功就得回溯
神奇的编译原理
神奇的编译原理
匹配成功要执行多少次????
神奇的编译原理
神奇的编译原理
int fun 可能是函数也可能只是函数声明,声明的话现在不用执行,这么多次费劲地判断它不值啊
想办法简化合并
神奇的编译原理
神奇的编译原理
神奇的编译原理
神奇的编译原理

神奇的编译原理
看一看效果
神奇的编译原理
再次看一看效果
神奇的编译原理
判断出来main和fun是函数后……
神奇的编译原理
语法树的强大

神奇的编译原理
神奇的编译原理
再来一遍执行,计算机就是这么拙!!!
必须要判断出来什么是什么,才能怎么什么!!
神奇的编译原理
下面的过程简略
神奇的编译原理
神奇的编译原理
return语句goto处理
神奇的编译原理
神奇的编译原理
注意注意 导致跳转的语句是基本块的边界语句
神奇的编译原理
下面的处理过程非天赋奇高,生下来就会敲代码者不能懂也!!!!
神奇的编译原理
神奇的编译原理

就这么一步步变成了汇编代码 add ……………………
mult……………………

神奇的编译原理
神奇的编译原理
神奇的编译原理
神奇的编译原理
神奇的编译原理
执行
m=10
结束
清栈
Good Bye!

相关文章: