《编辑原理》课程教学资源(PPT课件)目标代码生成

目标代码生成
目标代码生成

代码生成器 根据中间表示(R)生成代码 代码生成器的三个任务 指令选择:选择适当的指令实现R语句 寄存器分配和指派:把哪个值放在哪个寄存器中 指令排序:按照什么顺序安排指令执行 ·生成的目标程序应满足:保持源程序语义、高效 源程序 前端 中间 代码优L中间 代码 目标 代码 --代码 化器 生成器「程序 图8-1代码生成器的位置
代码生成器 • 根据中间表示(IR)生成代码 • 代码生成器的三个任务 • 指令选择:选择适当的指令实现IR语句 • 寄存器分配和指派:把哪个值放在哪个寄存器中 • 指令排序:按照什么顺序安排指令执行 • 生成的目标程序应满足:保持源程序语义、高效

要考虑的问题 代码生成器的输入 由前端生成的源语言的中间表示和符号表信息 ·中间表示形式,在本书中主要是三地址代码、DAG等 目标程序 目标机器的指令集体系结构 常见:RsC(精简指令集计算机),CSC(复杂指令集计 算机),基于堆栈的结构 本章中,采用一个非常简单的类RSC计算机作为目标 机,加入一些类CSC的寻址方式 生成汇编代码
要考虑的问题 • 代码生成器的输入 • 由前端生成的源语言的中间表示和符号表信息 • 中间表示形式,在本书中主要是三地址代码、DAG等 • 目标程序 • 目标机器的指令集体系结构 • 常见:RISC(精简指令集计算机),CISC(复杂指令集计 算机),基于堆栈的结构 • 本章中,采用一个非常简单的类RISC计算机作为目标 机,加入一些类CISC的寻址方式 • 生成汇编代码

要考虑的问题 指令选择 R的层次 指令集体系结构中本身的特性 生成代码的质量,要考虑到目标代码的效率 L d ro, b /R0=b ADd RO, RO, c / RO= R0 + c a =b+c IST a. RO // a=RO ILD RO, a RO ADD RO, Ro, e //Ro =RO+e st d. ro // d= RO LD RO a=a+1 ADD RO, RO, #1 //RO = RO +1 st a. ro /a=R0 INc a / if it's a valid instr
要考虑的问题 • 指令选择 • IR的层次 • 指令集体系结构中本身的特性 • 生成代码的质量,要考虑到目标代码的效率 INC a // if it’s a valid instr

要考虑的问题 寄存器分配和指派 有效地利用寄存器(最“小而快”的存储) 源程序的每个时刻,选择一组将被存放在寄存器中的变量 ·指定一个变量被放在哪个寄存器中 还需要考虑目标机器或操作系统对特定指令使用哪些 寄存器的规则
要考虑的问题 • 寄存器分配和指派 • 有效地利用寄存器(最“小而快”的存储) • 源程序的每个时刻,选择一组将被存放在寄存器中的变量 • 指定一个变量被放在哪个寄存器中 • 还需要考虑目标机器或操作系统对特定指令使用哪些 寄存器的规则

本书的目标语 指令格式:一个运算符,一个目标地址,一个源 运算分量的列表 ·内存按照字节寻址 ·n个通用寄存器RO,R1
本书的目标语言 • 指令格式:一个运算符,一个目标地址,一个源 运算分量的列表 • 内存按照字节寻址 • n个通用寄存器R0, R1, …

本书的目标语言的指令集 加载: ld dst,src dst为寄存器 LDr.x dro. r1 Dr,#100 保存: st dst,src STx.r STx.#100 运算: oP dst,srcu,src2 SUBr1 r2 r3 无条件跳转:BRL 条件跳转: Bond r,L ·当r里的值小于0时跳转L:BLTz,L
本书的目标语言的指令集 • 加载:LD dst, src • dst为寄存器 • LD r, x LD r0, r1 LD r, #100 • 保存:ST dst, src • ST x, r ST x, #100 • 运算:OP dst, src1 , src2 • SUB r1, r2, r3 • 无条件跳转:BR L • 条件跳转:Bcond r, L • 当r里的值小于0时跳转L:BLTZ r, L

指令中的dst和src 变量名x(内存中的位置) ·寄存器r a(r),其中a是一个变量,r是一个寄存器 a(r)的内存位置:a的地址加上存放在寄存器r中的值 LDR1,a(R2)表示赋值R1= contents(a+ contents(R2) n(r),其中n是一个整数,r是一个寄存器 LDR1,100(R2)表示赋值R1= contents(100+ content(R2) *r,表示r的内容所表示的位置上存放的内存位置 n LD R1, *100(R2)/R1=content(contents(100+content(R2) #n,表示一个直接常数 LDR1,#100ADDR1R1,#100
指令中的dst和src • 变量名x(内存中的位置) • 寄存器r • a(r),其中a是一个变量,r是一个寄存器 • a(r)的内存位置:a的地址加上存放在寄存器r中的值 • LD R1, a(R2)表示赋值R1 = contents(a+contents(R2)) • n(r),其中n是一个整数,r是一个寄存器 • LD R1, 100(R2)表示赋值R1 = contents(100+content(R2)) • *r,表示r的内容所表示的位置上存放的内存位置 • *n(r) • LD R1, *100(R2)表示R1 = content(contents(100+content(R2))) • #n,表示一个直接常数 • LD R1, #100 ADD R1,R1,#100

目标机指令序列示例 Ld R1, y //R1 LD R2. Z //R2 =y-2 SUB R1. R1. R2 //R1=R1-R2 ST x, R1 //x=R1 对于实数数组a, Ld R1, i b=al i /R1=i MUL R1. R1. 8 /R1=R1* Ld R2, a (r1) // R2= contents(a contents(r1)) ST b, R2 //b=R2 LD R1. c /R1=c a LD R2, j //R2= MUL R2, R2, 8 R2=R2*8 sT a(R2), R1 // contents(a contents(R2))=R1 LD R1,p //R1 x=求p LDR2,0(R1) // R2 contents(o+ contents(r1)) sT x R2
目标机指令序列示例 对于实数数组a

目标机指令序列示例(续) LD R1, p //R1=p 米p=y LD R2,y //R2= ST0(R1),R2 // contents(o+ contents(R1))=R2 Ld R1. x //R1=x if x< y goto L LD R2, y /R2 SUB R1, R1, R2 // R1 R1-R2 BLTZ R1. M // if R1 0 jump to M
目标机指令序列示例(续)
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 四川大学:Object-Oriented Design and Programming(Java,PPT课件)3.2 Graphical User Interface.ppt
- 《计算机系统结构》课程教学资源(PPT课件讲稿)第三章 流水线技术.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)异常处理 Exception Handling.ppt
- 中国科学技术大学:云计算基本概念、关键技术、应用领域及发展趋势.pptx
- 《C程序设计》课程电子教案(PPT课件讲稿)第二章 基本数据类型及运算.ppt
- 《电子商务概论》课程教学资源(PPT课件)第十章 电子商务安全技术.ppt
- 中国铁道出版社:《局域网技术与组网工程》课程教学资源(PPT课件讲稿)第4章 Windows Server系统工程.ppt
- 《Internet技术与应用》课程PPT教学课件(讲稿)第3讲 双绞线制作和传输介质.ppt
- jQuery个人主页(PPT讲稿).ppt
- 《数据结构》课程教学资源(PPT课件讲稿)第10章 内排序.ppt
- 最小生成树(PPT课件讲稿)Minimum Spanning Trees.pptx
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第五章 串和数组.pps
- 上海交通大学:《网络科学导论》课程PPT教学课件(Network Science An Introduction)Chapter 4 Degree Correlations & Community Structure.pptx
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Decision Tree.ppt
- 《软件工程》课程教学资源(PPT课件讲稿)详细设计.ppt
- 《汇编语言程序设计》课程教学资源(PPT课件讲稿)第二章 IBM-PC微机的功能结构.ppt
- 清华大学:高校信息化建设理论与规划(PPT讲稿).ppt
- 数据挖掘10大算法产生过程(PPT讲稿).ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第九章 多媒体技术基础.ppt
- 香港浸会大学:Computer Security(PPT课件讲稿)Cryptography Chapter 1 Symmetric Ciphers.ppt
- 上海交通大学:操作系统安全(PPT课件讲稿)设备管理与I/O系统.pps
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第7章 多处理器及线程级并行 7.1 引言 7.2 集中式共享存储器体系结构.pptx
- 《单片机原理及应用》课程教学资源(PPT课件讲稿)第11章 单片机应用系统的串行扩展.ppt
- 西安电子科技大学:《数据库系统 DataBase System》课程教学资源(PPT课件讲稿)normalization.ppt
- 《计算机软件技术基础》课程教学资源(PPT课件讲稿)排序(教师:曾晓东).ppt
- 四川大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)Unit5 Introduction to Computer Networks.ppt
- 《微型计算机原理及接口技术》课程电子教案(PPT课件)第9章 AT89S52单片机的I/O扩展.ppt
- 《数据挖掘导论 Introduction to Data Mining》课程教学资源(PPT课件讲稿)Data Mining Classification(Basic Concepts, Decision Trees, and Model Evaluation).ppt
- 《计算机组成与设计》课程教学资源(PPT课件讲稿)第2章 指令——计算机的语言.ppt
- 清华大学:Local Area Network and Ethernet(PPT课件讲稿).pptx
- 《密码学》课程教学资源(PPT课件讲稿)第10章 密码学的新方向.ppt
- 《计算机系统安全》课程教学资源(PPT课件讲稿)第七章 公开密钥设施PKI Public key infrastructure.ppt
- 《数字图像处理》课程PPT教学课件(讲稿)第四章 点运算.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第八章 代码生成.ppt
- Introduction to Convolution Neural Networks(CNN)and systems.pptx
- 华北科技学院:数字视频教学软件与制作(PPT课件讲稿)数字视频编辑软件Premiere 6.5(主讲:于文华).ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)文件系统.ppt
- 哈尔滨工业大学:再探深度学习词向量表示(PPT课件讲稿)Advanced word vector representations(主讲人:李泽魁).ppt
- 《Visual Basic程序设计》课程教学资源(PPT课件讲稿)第四章 VB的基本语句.pps
- 《单片机原理及应用》课程PPT教学课件(C语言版)第4章 C51程序设计入门(单片机C语言及程序设计).ppt