![编译方法、技术与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/849/51730849/b_51730849.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.5 目标代码生成
目标代码生成器将中间代码转化为机器相关的目标代码,并为变量进行寄存器的分配。分配寄存器之后,将目标代码转化为机器指令。完成目标代码生成后,程序从人类能够理解运用的源代码转化为机器能够执行的机器指令。
例如,对于中间代码:
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/21_01.jpg?sign=1738874424-wOEm3hLqYOUttcgIJYk8XTHzAprmA0O8-0-b934c92eba7f4bc7950e62687ddee0cf)
生成的目标代码为:
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/21_02.jpg?sign=1738874424-PZPylZLuGDdTlVFvueuTWQQxwFxfQipP-0-e062ba2447f6996dc32fa3efdeefb8ee)
程序依序将变量b和c的值存储到寄存器中,首先进行乘法的计算,然后进行加法的计算,最后执行赋值语句,存储运行结果。
在第5章中,我们将讨论以下内容:
●寄存器分配算法,寄存器的合理分配和使用是目标代码生成的重要一环。
●目标代码优化策略。
●代码生成器构建过程。