编译器笔记60-代码生成-寄存器的选择

三地址语句的目标代码生成

对每个形如x = y op z 的三地址指令I,执行如下动作

三地址语句的目标代码生成.png

寄存器描述符和地址描述符

  • 寄存器描述符(register descriptor)

记录每个寄存器当前存放的是哪些变量的值

  • 地址描述符(address descriptor)
  1. 记录运行时每个名字的当前值存放在哪个或哪些位置
  2. 该位置可能是寄存器、栈单元、内存地址或者是它们的某个集合
  3. 这些信息可以存放在该变量名对应的符号表条目中

基本块的收尾处理

对于一个在基本块的出口处可能活跃的变量x,如果它的地址描述符表明它的值没有存放在x的内存位置上,则生成指令“ST x, R” (R是在基本块结尾处存放x值的寄存器)。

管理寄存器和地址描述符

当代码生成算法生成加载、保存和其他指令时,它必须同时更新寄存器和地址描述符。

指令1.png
指令2.png
指令3.png
指令4.png

例1.png
例2.png
例3.png
例4.png
例5.png
例6.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 计算机系统漫游 代码从文本到可执行文件的过程(c语言示例):预处理阶段,处理 #inlcude , #defin...
    willdimagine阅读 3,643评论 0 5
  • 第6章类文件结构 6.1 概述 6.2 无关性基石 6.3 Class类文件的结构 java虚拟机不和包括java...
    kennethan阅读 973评论 0 2
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,455评论 0 1
  • 汇编语言的一些注意点 汇编语言是直接在硬件之上工作的编程语言。 CPU(Central Processing Un...
    BackSpace8阅读 1,806评论 0 1
  • 走过这里 静静的看着她 看久了,就离开 不去怀念 突然有一天 她出现在这里 你又看了很久 选择留下 一辈子
    青衣秋水阅读 123评论 0 1