第七章目标代码生成.pptxVIP

  • 5
  • 0
  • 约7.09千字
  • 约 46页
  • 2020-12-10 发布于浙江
  • 举报
第7章 目标代码生成 ;  (2) 待装配的机器语言模块,其地址均为相对地址,所以不能直接执行。当需要执行时由连接装配程序把它们与其它运行程序和库函数连接起来,装配成可执行的机器语言代码,如PC机中后缀为?.OBJ的文件都属于待装配的模块(文件)。   (3) 汇编语言程序,必须通过汇编程序的汇编方可转换成可执行的机器语言代码,如PC机中后缀为?.ASM的文件即为汇编语言程序。;  一个高级语言程序的目标代码要经常、反复使用,因此代码生成要着重考虑两个问题:一是如何使生成的目标代码较短,二是如何充分利用计算机的寄存器以减少目标代码中访问存储单元的次数。生成的目标代码越短,寄存器的利用越充分,目标代码的质量也就越高。   设计一个代码生成器需要考虑具体的机器结构、指令格式、字长及寄存器个数和种类,并且与指令的语义和所用的操作系统、存储管理等都密切相关。;7.1 一个简单代码生成器   一个简单的代码生成器,此生成器依次把每条中间代码变换成目标代码,并且在一个基本块范围内考虑如何充分利用寄存器的问题。一方面,在基本块中,当生成计算某变量值的目标代码时,尽可能地让该变量的值保留在寄存器中(即不编出把该变量的值存到内存单元的指令),直到该寄存器必须用来存放其它变量的值或已达基本块出口为止;另一方面,后续的目标代码尽可能地引用变量在寄存器中的值而不访问内存。;  如一C语言语句A=(B+C

文档评论(0)

1亿VIP精品文档

相关文档