自己动手构造编译系统:编译、汇编与链接2.1.5 代码生成

2.1.5  代码生成

  

         代码生成是编译器的最后一个处理阶段,它根据识别的语法模块翻译出目标机器的指令,比如汇编语言,这一步称为使用基于语法制导的方式进行代码生成。见图2-8。

  为了便于理解,本书采用常见的Intel格式汇编语言程序作为编译器的输出。继续引用赋值语句“var2=var1+100;”作为例子,若将之翻译为汇编代码,其内容可能是:

mov eax,[var1]

mov ebx,100

add eax,ebx

mov [tmp],eax

mov eax,[tmp]

mov [var2],eax

  参考图2-5中的两个非叶子节点,它们分别对应了表达式语法模块和赋值语句语法模块。上面汇编代码的前4行表示将var1与100的和存储在临时变量tmp中,是对表达式翻译的结果。最后两行表示将临时变量tmp复制到var2变量中,是对赋值语句的翻译结果。根据自定义语言的语法,需要对如下语法模块进行翻译:

  1)表达式的翻译。

  2)复合语句的翻译。

  3)函数定义与调用的翻译。

  4)数据段信息的翻译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值