几条特殊指令的解释执行:(见PL/0文本的interpret过程中相关操作的解释执行) 调用过程指令格式 : cal l a cal: begin (*generat new block mark*) s[t+1]:=base(l); 填写静态链 s[t+2]:=b; 填写动态链 s[t+3]:=p; 填写返回地址 b:=t+1; 被调用过程的基地址 p:=a 过程入口地址a送p end;
int: t:=t+a; (t是当前栈顶值) 过程出口指令格式 : opr 0 0 释放数据段(退栈) opr: case a of (*operator*) 0: begin (*return*) t:=b-1; 恢复调用前栈顶 p:=s[t+3]; 送返回地址到p b:=s[t+2] 恢复调用前基地址 end; |