第九章运行时存储空间组织 9.1目标程序运行时的活动 ■ 以Pascal为例,假定程序由若干个过程组 成 口过程(procedure)定义 口一个过程的活动指的是该过程的一次执行 口过程P一个活动的生存期,指的是从执行该过 程体第一步操作到最后一步操作之间的操作序, 包括执行P时调用其它过程花费的时间 口过程可以是递归的 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 第九章 运行时存储空间组织 9.1 目标程序运行时的活动 ◼ 以Pascal为例,假定程序由若干个过程组 成 过程(procedure)定义 一个过程的活动指的是该过程的一次执行 过程P一个活动的生存期,指的是从执行该过 程体第一步操作到最后一步操作之间的操作序, 包括执行P时调用其它过程花费的时间 过程可以是递归的
(1) program sort(input,output) (2) var a:array[0..10]of integer; (3) procedure readarray; (4) var i:integer; (5) begin (6) for i:=1 to 9 do read(a[i]) (7) end; (8) function partition(y,z:integer):integer; (9) var i:integer; program sort (10) begin ..... procedure readarray (11) end; function partition(y procedure quicksort 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 (1) program sort(input, output) (2) var a: array[0..10] of integer; (3) procedure readarray; (4) var i: integer; (5) begin (6) for i:=1 to 9 do read(a[i]) (7) end; (8) function partition(y, z:integer):integer; (9) var i:integer; (10) begin ...... (11) end; program sort procedure readarray function partition(y procedure quicksort
(12) procedure quicksort(m,n:integer); (13) var i:integer; (14) begin (15) if(n>m)then begin (16) i=partition(m,n)月 (17) quicksort(m,i-1): program sort (18) quicksort(i+1.n)】 procedure readarray (19) end; function partition(y (20) end; procedure quicksort (21) begin (22) a0]=-9999;a[10]=9999; (23) readarray; (24) quicksort(1,9) (25) end. 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 (12) procedure quicksort(m, n:integer); (13) var i:integer; (14) begin (15) if (n>m) then begin (16) i:=partition(m, n ); (17) quicksort(m, i-1 ); (18) quicksort(i+1, n ) (19) end; (20) end; (21) begin (22) a[0]:=-9999; a[10]:=9999; (23) readarray; (24) quicksort(1, 9 ) (25) end. program sort procedure readarray function partition(y procedure quicksort
参数传递 过程是模块程序设计的主要手段,同时也 是节省程序代码和扩充语言的主要途径。 过程定义: procedure add(x,y:integer;var z:integer) begin Z:=x+y; end; ■过程调用 add(a,b,c); 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 参数传递 ◼ 过程是模块程序设计的主要手段,同时也 是节省程序代码和扩充语言的主要途径。 ◼ 过程定义: procedure add(x,y:integer; var z:integer) begin z:=x+y; end; ◼ 过程调用 add(a,b,c);
参数传递方式 一.传地址 ■ 把实在参数的地址传递给相应的形式参数 ■方法: 口调用段预先把实在参数的地址传递到被调用段 可以拿到的地方; ▣程序控制转入被调用段之后,被调用段首先把 实在参数的地址抄进自己相应的形式单元中; 口过程体对形式参数的引用域赋值被处理成对形 式单元的间接访问。 ■PASCAL的变量参数方式 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 参数传递方式 一. 传地址 ◼ 把实在参数的地址传递给相应的形式参数 ◼ 方法: 调用段预先把实在参数的地址传递到被调用段 可以拿到的地方; 程序控制转入被调用段之后,被调用段首先把 实在参数的地址抄进自己相应的形式单元中; 过程体对形式参数的引用域赋值被处理成对形 式单元的间接访问。 ◼ PASCAL的变量参数方式