pratt chapter 7

46
1 Subprogram Control Chapter 7

Upload: gaurav

Post on 08-Apr-2015

128 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pratt Chapter 7

1

Subprogram Control

Chapter 7

Page 2: Pratt Chapter 7

2

7.1.Subprogram Sequence ControlSimple subprogram call-return

AssumptionsSubprograms cannot be recursive.Explicit call statements are required.

Not in exception handlers.Subprograms must execute completely

at each call . Not like a coroutine which continues

execution from the point of its last termination each time it is called.

Page 3: Pratt Chapter 7

3

Immediate transfer of control at point of call. Not like a scheduled subprogram call,

execution of the subprogram may be deferred until some later time.

Single execution sequence. Not like tasks which may execute

concurrently so that several are in execution at once.

Page 4: Pratt Chapter 7

4

Functions calls subprograms that return values directly.

procedure or subroutine calls operate only through side effects on

shared data.

Are identical in the sequence-control structures they require.

Page 5: Pratt Chapter 7

5

Implementation

Subprogram definition, activation.An activation

code segment: executable code, constants. Activation record: local data, parameters, …

code segment is invariant, each activation uses it.

Activation record is created and destroyed, and constantly changing.

Page 6: Pratt Chapter 7

6

We must talk of:execution of S during activation R

of the subprogram.CIP: Current-Instruction Pointer.

some point in code segmentCEP: Current-Environment Pointer.

To the activation record being used, the referencing environment.

Page 7: Pratt Chapter 7

7

How a program is executed?

An activation record for the main program (just one)

CEP points to it.CIP points to the first instruction of it.Interpreter goes to work …when a call is reached … return point (ip,ep) stored in the activation

record of the called subprogram. (p.290, fig.7.1.)

Page 8: Pratt Chapter 7

8

One important property of the copy-rule view of subprograms: at most one activation of any subprogram is in use at any point during program execution.

FORTRAN, COBOL.static allocation, code segment

extension .CIP is enough.P.292, fig. 7.2.

Page 9: Pratt Chapter 7

9

Recursive Subprograms

The recursive call creates a second activation of the subprogram during the lifetime of the first activation.

CEP and CIPPascal and C : use stack alwaysPL/1: just for recursive subprograms.

Page 10: Pratt Chapter 7

10

The dynamic chain of pointers.Ep values : a linked list , links the

activation records on the central stack in order of their dynamic creation.

CEP: the top A.R.ep value of CEPs return point: the 2nd A.R.…last ep: the main program.

Page 11: Pratt Chapter 7

11

7.2. Attributes of Data Control

Accessibility of data at different points during program execution.

X:=Y+2*Z Y may be a local or nonlocal variable we must know scope rules for declarations:

if Y is a formal parameter, parameter transmission

if Y is a parameterless subprogram,mechanisms for returning results.

Page 12: Pratt Chapter 7

12

Names and Referencing Environments

Two ways that a data object can be made available as an operand for an operation: Direct transmission.

Is used for data control within expressions.Data object is allocated storage temporarily during its

lifetime, without any name.Like 2*Z in X:=Y+2*Z.

Referencing through a named data object.Most data controls outside of expressions .A name ; or a name of a larger data object with a

selection operation.

Page 13: Pratt Chapter 7

13

Program elements that may be named

Variable names. * Formal parameter names. * Subprogram names. * Names for defined types. Names for defined constants. Statement labels (names for statements). Exception names. Names for primitive operations, e.g., + , * ,SQRT. Names for literal constants, e.g., 17, 3.25.

Page 14: Pratt Chapter 7

14

Name: simple name: designating an entire

data structure. composite name: a name for a

component of a data structure. (a name and a selection)a[3].class[2].room

Page 15: Pratt Chapter 7

15

Associations and Referencing Environments

Association: binding of identifiers(simple names) to particular data objects and subprograms.

During execution:1. at the beginning of execution of

the main program, associations are made(variables and subprograms).

Page 16: Pratt Chapter 7

16

2. During execution of main program, it invokes referencing operations, to determine the particular data object or subprogram associated with an identifier. A:=B+FN(C)

3. when each subprogram is called, a new set of associations is created.

Page 17: Pratt Chapter 7

17

4. It invokes referencing operations too.

5. When the subprogram return, its associations are destroyed.

6. The main program continues ...

Page 18: Pratt Chapter 7

18

Referencing Environments

For each program or subprogram: A set of identifier associations available for use in referencing during execution.

Invariant during one activation.Set up when the subprogram

activation is created.

Page 19: Pratt Chapter 7

19

Referencing environment components

Local referencing environment. Created on entry to a subprogram.

Nonlocal referencing environment. Not Created on entry to a subprogram.

Global referencing environment. A part of n.l.e., main program.

Predefined referencing environment. Defined directly in the language definition.

Page 20: Pratt Chapter 7

20

Visibility : an association for an identifier is said to be visible within a subprogram if it is part of the referencing environment for that subprogram. Hidden if redefined.

dynamic scope: dynamic scope of an association consists of the set of subprogram activations within which it is visible.

Page 21: Pratt Chapter 7

21

Referencing operation: an operation with the signature ref-op: id*referencing-environment -> data object or

subprogram

Local, nonlocal, and global references. If the association is local ...

Page 22: Pratt Chapter 7

22

Aliases for data objects

More than one name for a data object parameters in several link lists

aliasing makes understanding a program difficult.

Optimization harder.P.300 fig. 7.4.

Page 23: Pratt Chapter 7

23

Dynamic Scope

The Dynamic scope of an association for an identifier, is the set of subprogram activations in which the association is visible during execution.

A Dynamic scope rule defines the dynamic scope of each association in terms of the dynamic course of program execution. For example you can define it according to the

dynamic chain of subprogram activations.

Page 24: Pratt Chapter 7

24

Static Scope

The static scope of a declaration is that part of the program text where a use of the identifier is a reference to that particular declaration of the id.

A static scope rule is a rule for determining the static scope of a declaration. For example the rule used in Pascal.

Page 25: Pratt Chapter 7

25

You can make no use of static scope rules. LISP, SNOBOL4

The importance of static scope. Static type checking: faster and more

reliable. Reading a program easier. Ada, C, FORTRAN, Pascal

Page 26: Pratt Chapter 7

26

Block structure

In a block-structured language, each program or subprogram is organized as a set of nested blocks.

Introducing a new local referencing environment. P.304, fig. 7.5.

Page 27: Pratt Chapter 7

27

Static scope rulesp.304, 3051. Head of each block.2. Immediately enclosed the first block.

…up too the predefined language env., and then an error.

3. Inner ones encapsulate dcl.s4. Named block can be referenced. Every reference to a name ,associated to a unique dcl.

Page 28: Pratt Chapter 7

28

Local data and local referencing environment

Local environment consists of ids in the head of Q (but not Q), variable names, formal parameter names, subprogram names.

Retention and deletion p.306,307…, fig. 7.6,7,8,9

Page 29: Pratt Chapter 7

29

P.310some points about retention/deletion :

absence of recursion=> implementation is the same

having bothstatic and automatic in PL/1

a subprogram name: retained a formal parameter name: deleted recursive subprogram calls=> deleted (often)

Page 30: Pratt Chapter 7

30

Deletion, Retention

Retention history sensitive more storage space

Deletion less storage space

Page 31: Pratt Chapter 7

31

7.3. Shared Data in Subprograms

Sharing of data objects : direct sharing through parameter

transmission through nonlocal environments

explicit common environments and implicit nonlocal environments

dynamic scopestatic scopeinheritance

Page 32: Pratt Chapter 7

32

Parameter and Parameter Transmission

When we use parameters and when we use nonlocal reference?

Parameters for data subprograms statement labels

p.313, a table of different kinds of actual parameters

Page 33: Pratt Chapter 7

33

Establishing the correspondence positional (pairing) by explicit name

in Ada: Sub(Y=>B, X=>27);

Page 34: Pratt Chapter 7

34

Methods for Transmitting Parameters

Call by namecall by referencecall by valuecall by value-resultcall by constant valuecall by result

Page 35: Pratt Chapter 7

35

Call by name

the actual parameter is to be substituted everywhere for the formal parameter in the body of the called program before execution of the subprogram begins.

If we have call Sub(X) Actual parameter X, as a simple parameterless

subprogram. Solve the ambiguity if X is already a variable

known to Sub.

Page 36: Pratt Chapter 7

36

Call by reference

A pointer to the location of the data object is made available to the subprogram.

The data object, doesn’t change position.

Page 37: Pratt Chapter 7

37

Call by value

Upon invoking a subprogram, the value is passed (r-value ).

the formal parameter contains the value that is used.

No alias.

Page 38: Pratt Chapter 7

38

Call by value-result

The formal par. Is a local var. of the same type as the actual par.

Like call by value, but the result is copied in the actual par. at the end.

Page 39: Pratt Chapter 7

39

Call by constant value

No change in the value of the formal par. Is allowed during prog. Execution.

If transmitted to another subprogram it must be by constant value too.

Just an input.

Page 40: Pratt Chapter 7

40

Call by result

The formal par. Is a local var. with no initial value.

The result is copied in the actual par. at the end.

Page 41: Pratt Chapter 7

41

FORTRAN: only call by ref.Pascal : both (var keyword)C: only call by value.

By pointers…sub(&I)...sub(int *x)

Page 42: Pratt Chapter 7

42

Transmission Semantics

Rather than mode of transmission, role of the parameter.

in, out, in out

In Ada: elementary data types

in: constant valueout, in out: value-result

composite data types : by reference

Page 43: Pratt Chapter 7

43

Explicit function values

An extra implicit out parameter from the subprogram.

In C: return 2*xIn Pascal: fn:=2*x

Page 44: Pratt Chapter 7

44

Implementation of parameter transmission

In activation record.Each formal par. P is a local data

object.P

a local data object of type T (type of actual par.).

a pointer to a data object of type T .

Page 45: Pratt Chapter 7

45

Various actions at the point of call : actual par.s evaluated. at the point of entry and exit:

prologue: complete the transmission.epilogue: copy the result values (in

transmissions by result or value-result).

Compiler: transmission of par.s. static type checking.

Page 46: Pratt Chapter 7

46

Parameter-Transmission examples

P.320