《《编译原理》课程简介 (3).pdf》由会员分享,可在线阅读,更多相关《《编译原理》课程简介 (3).pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编译原理COMPILATION PRINCIPLE 第一章 引 论1.3 高级语言程序简介p模块之间进行参数传递有三种形式:一、参数传递v1、传地址(call by reference):把实在参数的地址传递给相应的形式参数v2、传值(call by value):调用段把实在参数的值计算出来并放在被调用段可以拿 到的地方,把值带入。p模块之间进行参数传递有三种形式:一、参数传递v3、传名(call by name):过程调用的作用相当于把被调用的过程体抄到调用出现 的地方,但把其中任一出现的形式参数都替换成相应的实在 参数(文字替换)。二、存贮管理v 1、静态存贮分配 编译时就安排好目标程序
2、运行时的全部数据空间,并能确定每个数据项目的单元地址。v 2、动态存贮分配 如果允许递归、可变数据结构,则必须动态分配。栈式:整个程序数据空间安排在一个栈中 堆式:允许自由地申请和退还空间 对于下述程序,试分析用传名、传值、传地址方法传递参数时所得对于下述程序,试分析用传名、传值、传地址方法传递参数时所得的打印结果。的打印结果。PROGRAM SS(input,output);VAR A,B:integer;PROCEDURE P(x,y,z:integer);begin y:=y+1;z:=z+x;end;BEGIN A:=2;b:=3;P(A+B,A,A);writeln(A=,A);EN
3、D(1)传名:相当于执行 A:=2;B:=3;A:=A+1;A:=A+(A+B)writeln(A=,A);所以,结果为A=9(2)传值:把实参的值计算出来传给形参。在调用过程P时,形参 x=5;y=2;z=2 出过程P时,形参 x=5;y=3;z=7 这并不把结果回送到主程序,所以结果为A=2(3)传地址:实参计算出结果,把地址送形参。设变量 T=A+B(结果为5)。执行时把T、A、A的 地址(设为addr1,addr2,addr2)送给形参:x=addr1,y=addr2,z=addr3。T的地址addr1即 x A的地址addr2即 y A的地址addr2即 z 执行过程P即为:y:=y+1;z:=z+x 所以,为 A:=A+1=3 为 A:=A+T=8。因此,最后 A=8。523TABProcedure P(x,y,z);begin y:=x+y;z:=z*z;end begin A:=2;B:=A*2;P(B-A,A,B);print A,B end传地址、传值和传名,结果如何|编译原理