- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 目标代码生成 内容 基本概念 寄存器分配 目标代码生成 实例 小结 目标代码vs.中间代码 目标代码 中间代码 代码形式 具体实现的机器码 程序逻辑的直接翻译 地址形式 绝对地址 相对地址 是否产生额外代码 对AR的管理代码 返回值处理 无 目标代码 实际目标代码:实际机器上的指令序列。 绝对地址机器代码:执行效率高、可移植性差 可重定位的机器代码:需要连接器装配 汇编代码:可移植性好、需要经过汇编转换 虚拟目标代码:虚拟机上的目标程序。在本地机器上具备虚拟机的解释器。 寻址模式与寄存器分配 指令格式: Op R #C (立即数-----寄存器) Op R2 d(R1) (存储器-----寄存器) Op R1 R2 (寄存器-----寄存器) 寄存器分配 : 代价:访问内存的次数 模式:单寄存器模式、多寄存器模式 原则:优先分配;活跃驻留;多载 附录1:80X86汇编指令 一、数据传送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。 二、算术指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。 三、逻辑指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。 四、控制转移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。 五、串操作指令:MOVS、LODS、STOS、CMPS、SCAS。 六、标志处理指令:CLC、STC、CLD、STD。 附录2:虚拟机指令系统 指令名称 指令形式 指令名称 指令形式 读 IN R 除 DIV R, A 写 OUT R 条件真转移 JMP1 R, A 取值 LD R, A 条件假转移 JMP0 R, A 存值 ST A, R 无条件转移 JMP A 加 ADD R, A 取址 LEA R, A 减 SUB R, A 块传送 MOVEB A1, A2, S 乘 MULT R, A 表达式和赋值语句的翻译 形如(Op,A,B,T):LD R,A;Op R,B 形如(ASSIG,A,B):LD R,A;ST B,R 例:Z:= X*(a+b)* Y* (a+b) (+,a,b,t1) LD R,a; Add R,b (*,X,t1,t2) ST R,t1; Mult R, X (*,t2,Y,t3) Mult R,Y (*,t3,t1,t4) Mult R,t1 输入/输出语句的翻译 输入语句:(READ,-,-, A) IN R ST A , R 输出语句:(WRITE,-,-,A) LD R , A OUT R 条件语句四元式的翻译 (THEN, t,_ , _)生成的目标代码为: LD R , t JMP0 R , __ (ELSE,_,_,_)生成的目标代码为: JMP __ 同时回填JUMP0指令的目的地址 (ENDIF,_,_,_)不产生目标代码,只负责完成ELSE子句的地址回填工作 。 循环语句的翻译 (WHILE,_,_,_)不产生目标代码,只用来标记while语句的入口地址。 (DO , t ,_ ,_)产生的目标代码为: LD R , t JMP0 R , _ (ENDWHILE, _, _, _)产生的目标代码: JMP A 回填前面DO四元式所产生的半条指令 标号和goto语句的翻译 (LABEL, _, _,L)不产生目标代码,只向L所分配到的存储单元写入转向地址。 (GOTO, _, _, L)生成的目标代码为 JMP *L 过程、函数说明的翻译 (ENTRY, Q, —, —) 不产生目标代码,只需将当前指令地址A填入Q的相应语义信息中。 (ENDPROC, —,—,—)或(ENDFUNC,—,—,—) 1. 将本层活动记录中保存的机器状态恢复过来,对应一组读指令。 2. 删除本层活动记录,使动态外层的活动记录成为当前活动记录; 3. 按1(top)中记载的返回地址返回。 目标代码为: ST top, sp LD sp , 0(top) // 作废当前活动记录 JMP 1(top) //按返回地址返回 过程、函数调用语句的翻译 值参情形 (ValACT , t , Offset , size ) a.若t为直接变量 ,则生成的目标代码为: LD R
您可能关注的文档
- (摘)六则质量小故事.ppt
- 《电机学II》概念、常识.pdf
- 《管理心理学复习资料》考试小抄.doc
- 《汇编语言程序设计》宋锦河 第4章 程序设计方法n.ppt
- 《模拟与数字电子技术》第3章 放大电路基础.ppt
- 《模拟与数字电子技术》第一章绪论.ppt
- 《思想道德修养与法律基础》串讲笔记-自考复习.doc
- 《模拟与数字电子技术》第五章 放大电路中的反馈.ppt
- 《医学统计学》南方医科大学:第1讲 绪论.ppt
- 《医学统计学》南方医科大学:第4讲 参数估计.ppt
- 301115_2024_#ESG_联检科技_2024年度环境、社会和治理(ESG)报告_2025-04-29.pdf
- 300308_2024_#ESG_中际旭创_2024年环境、社会及公司治理(ESG)报告_2025-04-21.pdf
- 想生科技产品注册公告及所需文件상생기술제품_등록_공고문_및_제출_서류.pdf
- 300760_2024_#SD_迈瑞医疗_2024年度可持续发展报告_2025-04-29.pdf
- 300870_2024_#SD_欧陆通_欧陆通2024年可持续发展报告_2025-04-22.pdf
- 301369_2024_#ESG_联动科技_2024年度环境、社会与公司治理(ESG)报告_2025-04-18.pdf
- 300937_2024_#SD_药易购_2024年度可持续发展报告_2025-04-25.pdf
- 300621_2024_#ESG_维业股份_维业股份:2024年度环境、社会和公司治理(ESG)报告_2025-04-19.pdf
- 300428_2024_#SD_立中集团_立中四通轻合金集团股份有限公司2024年度可持续发展报告-中文版_2025-04-21.pdf
- 301167_2024_#ESG_建研设计_2024年度环境、社会及公司治理(ESG)报告_2025-04-04.pdf
文档评论(0)