地址语句的实现 三元式 。通过计算临时变量值的语句的位置来引用这个临时 变量 三个域:op、arg1和arg2 op arg 1 arg2 (0) minus (2) minus 3 023 (4)+ cbcb(a (5) assign
三地址语句的实现 三元式 ⚫ 通过计算临时变量值的语句的位置来引用这个临时 变量 ⚫ 三个域:op、arg1和arg2 op arg1 arg2 (0) uminus c (1) * b (0) (2) uminus c (3) * b (2) (4) + (1) (3) (5) assign a (4)
地址语句的实现 x(:=y op arg 1 arg2 (0)[] X (1) assign (0) y ●X:=y op arg 1 arg2 0)=[] y assign X
三地址语句的实现 x[i]:=y op arg1 arg2 (0) [ ] = x i (1) assign (0) y x:=y[i] op arg1 arg2 (0) = [ ] y i (1) assign x (0)
地址语句的实现 间接三元式 列出指向三元式的指针,而不是三元式 ●间接码表一张指示器表,按运算的先后次 序列出有关三元式在三元式表中的位置。 优点 ●方便优化(只需调整间接表) 节省空间(同一四元式不需多重存储)
三地址语句的实现 间接三元式 ⚫ 列出指向三元式的指针,而不是三元式 ⚫ 间接码表:一张指示器表,按运算的先后次 序列出有关三元式在三元式表中的位置。 ⚫ 优点: ⚫ 方便优化(只需调整间接表) ⚫ 节省空间(同一四元式不需多重存储)
例如,语句 X:=(A+B)*C Y:=D↑(A+B) 的间接三元式表示如下表所示。 间接代码 元式表 OP ARGI ARG2 23) +A B 12(( (2) 4)↑D(1) (5) (5)
例如,语句 X:=(A+B)*C; Y:=D↑(A+B) 的间接三元式表示如下表所示。 间接代码 (1) (2) (3) (1) (4) (5) 三元式表 OP ARG1 ARG2 (1) + A B (2) * (1) C (3) := X (2) (4) ↑ D (1) (5) := Y (4)
272声明语句 当考查一个过程或分程序的一系列声 明语句时,便可为局部于该过程的名字 分配存储空间。 对每个局部名字,都将在符号表中建 立相应的表项,并填入有关的信息如类 型、在存储器中的相对地址等
2.7.2 声明语句 当考查一个过程或分程序的一系列声 明语句时,便可为局部于该过程的名字 分配存储空间。 对每个局部名字,都将在符号表中建 立相应的表项,并填入有关的信息如类 型、在存储器中的相对地址等