神奇的编译原理
来源:互联网 发布:ubuntu修改文件夹权限 编辑:程序博客网 时间:2024/05/17 08:12
**
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!
- 神奇的编译原理
- BFC 神奇背后的原理
- BFC 神奇背后的原理
- BFC 神奇背后的原理
- BFC 神奇背后的原理
- BFC 神奇背后的原理
- BFC神奇背后的原理
- BFC 神奇背后的原理
- BFC 神奇背后的原理
- BFC 神奇背后的原理
- BFC背后的神奇原理
- 神奇的overflow:hidden及其背后的原理
- 前端精选文摘:BFC 神奇背后的原理
- 前端精选文摘:BFC 神奇背后的原理
- 前端精选文摘:BFC 神奇背后的原理
- 前端精选文摘:BFC 神奇背后的原理
- 前端精选文摘:BFC 神奇背后的原理
- 前端精选文摘:BFC 神奇背后的原理
- 安装Sframe时出现:SFrame-2.1-cp27-none-win_amd64.whl is not supported wheel on this platform
- jsp内置对象之get方法与post方法的比较
- linux的 0号进程 和 1 号进程
- Ajax 异步小demo
- luogu 2986
- 神奇的编译原理
- 【二分+贪心】BZOJ1816 [Cqoi2010]扑克牌
- Linux-010 centos7下搭建FTP服务器
- Linux设备驱动程序——字符设备驱动编程
- Java工程师为何如此的火爆?
- 高精度之加法
- C#委托与事件Ⅰ
- 记查找LDRA跑失败的过程
- hiho- 漏写的数字(水)