编译原理之初步学习

编译原理篇

前言:

第一次接触编译原理,第一次使用MARKDOWN格式写东西,这也是我的第一篇博客。虽然看书没有看太懂,但是还是想把自己学习到的留下来,使用一下markdown算是一个小小的开始,希望在日后的学习中能够更加透彻的理解编译原理,能够回来进行一个小小的完善和补充。这里仅打出编译原理的框架。
一串代码从编辑到执行经历了什么

Created with Raphaël 2.2.0 开始 预编译 编译 汇编 链接 结束

分步解答

预编译

$gcc -E hello.c -o hello.i //预编译将.c文件编译为.i文件
简单的将预编译理解为源码文本的替换

编译

$gcc -S hello.i -o hello.s //预编译将.i文件编译为.s文件

词法分析

  • 扫描
  • 词法记号
  • 有限自动机
  • 解析器
  • 错误处理

语法分析

  • 文法定义
  • 递归下降子程序
  • 错误处理

符号表管理

  • 符号表数据结构
  • 作用域管理
  • 变量管理
  • 函数管理

语义分析

  • 声明于定义语义检查
  • 表达式语义检查
  • 语句语义检查
  • 错误处理

代码生成

  • 中间代码生成
  • 程序运行时储存
  • 函数定义与return语句翻译
  • 表达式翻译
  • 复合语句与break、continue、语句翻译
  • 目标代码生成
  • 数据段生成

编译优化

  • 数据流分析
    • 流图
    • 数据流分析框架
  • 中间代码优化
    • 常量传播
    • 复写传播
    • 死代码消除
  • 寄存器分配
    • 图着色算法
    • 变量帧偏移计算
  • 窥孔优化

汇编

词法分析

语法分析

符号表管理

表信息生成

指令生成

目标文件生成

链接

信息收集

地址空间分配

符号解析

重定位

程序入口点与运行时库

可执行文件生成

结语

其实我觉得markdown也是基于这一套编译流程的语言,只不过针对性比较强。行了我不瞎说了,先这样吧。今天回去睡觉,明天再做补充。国庆快乐。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值