第7章 代码生成和代码优化 中间 代码 源程序前端 中间 代码 优化 生成 目标 代码 代码 程序 器 器 本章内容 ,一个简单的代码生成算法 涉及存储管理、指令选择、寄存器分配和计算次 序选择等基本问题 通过一个完整的例子来介绍代码优化
第7章 代码生成和代码优化 中间 代 码 中间 代码 目标 前端 代 码 优 化 器 中间 代码 源程序 代码 生成 器 中间 代码 目标 程序 器 器 本章内容 • 一个简单的代码生成算法 – 涉及存储管理、指令选择、寄存器分配和计算次 序选择等基本问题 • 通过 个完整的例子来介绍代码优化 通过一个完整的例子来介绍代码优化
7.1代码生成器设计中的问题 7.1.1目标程序 绝对机器语言程序 目标程序将装入到内存的固定地方 粗略地说,相当于现在的可执行目标模块(第8 章介绍) 可重定位目标模块 一代码中含重定位信息,以适应重定位要求
7 1. 代码生成器设计中的问题 7.1.1 目标程序 • 绝对机器语言程序 – 目标程序将装入到内存的固定地方 – 粗略地说,相当于现在的可执行目标模块(第8 章介绍) • 可重定位目标模块 – 代码中含重定位信息,以适应重定位要求
7.1代码生成器设计中的问题 7.1.1目标程序 ·可重定位目标模块 L7: testl %eax,%eax je .L3 testl %edx,%edx je .L7 movl %edx,%eax jmp .L7 可重定位目标模块中 .L3: leave 需要有绿色部分的重定 ret 位信息
7 1. 代码生成器设计中的问题 7.1.1 目标程序 • 可重定位目标模块 .L7: testl % % eax, eax je .L3 testl %edx,%edx je .L7 movl %edx,%eax jmp .L7 可重定位目标模块中 j p .L3: leave , 需要有绿色部分的重定 ret 位信息
7.1代码生成器设计中的问题 7.1.1目标程序 绝对机器语言程序 目标程序将装入到内存的固定地方 粗略地说,相当于现在的可执行目标模块(第8 章介绍) 可重定位目标模块 代码中含重定位信息,以适应重定位要求 ~允许程序模块分别编译 允许从目标模块调用其他预先编译好的程序模块
7 1. 代码生成器设计中的问题 7.1.1 目标程序 • 绝对机器语言程序 –目标程序将 内存 装入到 的固定地方 –粗略地说,相当于现在的可执行目标模块(第8 章介绍) • 可重定位目标模块 –代码中含重定位信息,以适应重定位要求 –允许程序模块分别编译 –允许从目标模块调用其他预先编译好的程序模块
7.1代码生成器设计中的问题 7.1.1目标程序 绝对机器语言程序 可重定位目标模块 代码中含重定位信息,以适应重定位要求 -允许程序模块分别编译 允许从目标模块调用其他预先编译好的程序模块 汇编语言程序 -免去编译器重复汇编器的工作 增加可读性
7 1. 代码生成器设计中的问题 7.1.1 目标程序 • 绝对机器语言程序 • 可重定位目标模块 –代码中含重定位信息,以适应重定位要求 –允许程序模块分别编译 –允许从目标模块调用其他预先编译好的程序模块 • 汇编语言程序 –免去编译器重复汇编器的工作 –增加可读性