Browse Prior Art Database

Lexicographic Chain to Update a Display

IP.com Disclosure Number: IPCOM000074075D
Original Publication Date: 1971-Mar-01
Included in the Prior Art Database: 2005-Feb-23
Document File: 1 page(s) / 12K

Publishing Venue

IBM

Related People

Henhapl, W: AUTHOR [+2]

Abstract

The following describes how the mechanism used in some compilers for reference to automatic variables can be made more efficient in terms of steps required.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 53% of the total text.

Page 1 of 1

Lexicographic Chain to Update a Display

The following describes how the mechanism used in some compilers for reference to automatic variables can be made more efficient in terms of steps required.

The original mechanism uses an array of addresses (called the Display) to permit reference to automatic variables. The essential details of the handling of the Display may be described as follows:

Each block of a program is assigned a unique Display offset. One dynamic storage area (DSA) is allocated for each block or procedure invoked and linked into a list (called the Chain) on the principle that the preceding element in the Chain is either:

For a DSA corresponding to the activation of a procedure passed as a parameter - the DSA corresponding to the block which first passed the procedure as a parameter, or in all other cases - the last installed DSA.

At run time the entires in the Display point to the current, if any, DSA for each offset. This is ensured by the following dynamic updating procedure. a) Invocation of a nonrecursive block/procedure other than via a parameter - store new DSA address in the Display at given offset, b) Exit from nonrecursive block/procedure invoked other than via a parameter - do nothing, c) Invocation of a recursive block/procedure other than via a parameter - save the Display entry, found at the given offset, in the new DSA and store the address of the new DSA in the Display at the given offset, d) Exit from a recursive block/procedure invoked other than via a...