代码生成:从高级语言到机器指令的艺术
1 指令集分类及其对代码生成的影响
在编译器设计中,代码生成阶段是将高级语言程序转换为机器代码的关键步骤。为了有效地完成这一任务,了解不同类型的指令集及其特点至关重要。根据每条指令允许的不同操作数数量,指令集可以分为以下几类:
- 零地址代码 :所有操作(除栈操作外)从栈中获取操作数,并将结果放回栈中。这种代码对应于逆波兰表示法(Reverse Polish Notation, RPN)。
- 一地址代码 :每个操作使用累加器寄存器和一个额外的操作数,结果留在累加器中。
- 二地址代码 :每条指令可以使用两个通用操作数,结果放在其中一个操作数中。
- 三地址代码 :从两个操作数中取值进行组合,并将结果放在第三个操作数中。
| 指令集类型 | 操作数数量 | 特点 |
|---|---|---|
| 零地址代码 | 0 | 使用栈操作,适合逆波兰表示法 |
| 一地址代码 | 1 | 累加器寄存器,结果留在累加器中 |
| 二地址代码 |
超级会员免费看
订阅专栏 解锁全文
809

被折叠的 条评论
为什么被折叠?



