Basic Blocks & Traces
# Basic Blocks and Traces
# Canonical Form
IR 存在一些与机器语言不能完全对应的情况,和与编译优化分析相冲突的情况。
CJUMP 能够转移到 t 或者 f,但是真正的机器语言在条件为假的时候直接下降至下一条指令(条件为真才跳转)
在表达式中使用 ESEQ 不太方便,会使子树不同的计算顺序产生不同的计算结果
CALL 调用 CALL 作为参数的时候会有寄存器冲突、语句副作用(修改全局变量、改变堆内存,etc.)等问题
三种方法:
Linearize: Transform trees into a list of canonical
trees...
more...








