全球旧事资料 分类
它被运行时,给它分配的数据空间(下边称数据段)包括静态部分和动态部分,对于动态部分,要注意的是,栈顶寄存器指出了当前栈中最新分配的单元。4)B:基址寄存器:指向每个过程被调用时,在数据区S中给它分配的数据段的起始地址,也称基地址21中间代码表示对PL0编译程序的目标代码的指令格式描述如下:fla
其中f代表功能码,l表示层次差,a的含意对不同的指令有所区别,见下面对每条指令的解释说明:lit0a
将常数值取到栈顶,a为常数值
将变量值取到栈顶,a为偏移量,l为层差将栈顶内容送入某变量单元中,a为偏移量,l为层差调用过程,a为过程地址,l为层差在运行栈中为被调用的过程开辟a个单元的数据区无条件跳转至a地址条件跳转,当栈顶布尔值非真则跳转至a地址,否则顺序执行过程调用结束后返回调用点并退栈栈顶元素取反
LodlaSSTEPlaCallaI
t0ajmp0aJpc0aopr00opr01
fopropropropropropropropropropropropropropropr
000000000000000
2345678910111213141516
次栈顶与栈顶相加,退两个栈元素,结果值进栈次栈顶减去栈顶,退两个栈元素,结果值进栈次栈顶乘以栈顶,退两个栈元素,结果值进栈次栈顶除以栈顶,退两个栈元素,结果值进栈栈顶元素的奇偶判断,结果值在栈顶次栈顶与栈顶是否相等,退两个栈元素,结果值进栈次栈顶与栈顶是否不等,退两个栈元素,结果值进栈次栈顶是否小于栈顶,退两个栈元素,结果值进栈次栈顶是否大于等于栈顶,退两个栈元素,结果值进栈次栈顶是否大于栈顶,退两个栈元素,结果值进栈次栈顶是否小于等于栈顶,退两个栈元素,结果值进栈栈顶值输出至屏幕屏幕输出换行从命令行读入一个输入置于栈顶
22语法分析方法自顶向下的语法分析程序分程序变量说明部分VAR标识符;A语句复合语句语句END读语句READ(标识符)A
BEGIN
f六、测试用例1测试和的运算功能,测试文件为P9101PLO
2测试FOR语句功能,测试文件为P9104PLO
FOR变量表达式STEP表达式DO语句FOR变量表达式UNTIL表达式DO语句
f七、开发过程和完成情况1、扩充赋值运算:和
思路:乘等和除等运算的实现方法近似,故把两者看成一个看待。采用临时变量存储这两个运算符,再分别对这两种情况处理。具体代码实现:ifSYMADDEQSYMDIVEQ遇到和ADDOPSYM临时存放运算符ifi0开始处理GetSymGENLODLEVTABLEivpLEVELTABLEivpADR取值到栈顶EXPRESSIONFSYSLEVTXifADDOPADDEQ遇到时GENOPR0r
好听全球资料 返回顶部