前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

绪论

作者头像
code-child
发布2023-05-30 14:19:06
1670
发布2023-05-30 14:19:06
举报
文章被收录于专栏:codechildcodechild

编译原理

编译:把高级语言(源语言)翻译成汇编语言或者机器语言(目标语言)的过程。

那么一个源程序是怎么变成一个可执行程序的?

源程序经过预处理器,编译器和汇编器,链接器和加载器,最后到可执行程序。

预处理器:把储存在不同文件中的源文件汇集在一起,宏替换。

编译器和汇编器:(通常情况下两者是一起的)

  • 编译器:词法分析,语法分析,语义分析。生成汇编代码。
  • 汇编器:生成可重定位的机器代码。
    • 可重定位:内存中存放的起始地址不是固定的。

链接器和加载器:

  • 链接器:把可重定位的机器代码连接在一起,解决外部内存地址问题。
  • 加载器:修改可重定位地址,把指令和数据放在内存的适当位置。

词法分析

从左往右扫描代码,识别出不同的单词的类型,把单词转换成机内形式——词法单元(token)形式

语法分析

从词法分析中生成的token序列中识别出各类短语,并创建语法分析树。

语义分析

语义分析包括:收集表示符的属性信息和语义检查

中间代码

常见的表达形式:

目标代码生成

代码优化

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译原理
    • 词法分析
      • 语法分析
        • 语义分析
          • 中间代码
            • 目标代码生成
              • 代码优化
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档