Question? Leave a message!

Run-Time Environments

Run-Time Environments
Dr.MasonHanks Profile Pic
Published Date:23-07-2017
Website URL
Run-Time Environments www.ThesisScientist.comOutline  Compiler must do the storage allocation and provide access to variables and data  Memory management  Stack allocation  Heap management  Garbage collection www.ThesisScientist.comStorage Organization www.ThesisScientist.comStatic vs. Dynamic Allocation  Static: Compile time, Dynamic: Runtime allocation  Many compilers use some combination of following  Stack storage: for local variables, parameters and so on  Heap storage: Data that may outlive the call to the procedure that created it  Stack allocation is a valid allocation for procedures since procedure calls are nested www.ThesisScientist.comSketch of a quicksort program www.ThesisScientist.comActivation for Quicksort www.ThesisScientist.comActivation tree representing calls during an execution of quicksort www.ThesisScientist.comActivation records  Procedure calls and returns are usaully managed by a run-time stack called the control stack.  Each live activation has an activation record (sometimes called a frame)  The root of activation tree is at the bottom of the stack  The current execution path specifies the content of the stack with the last activation has record in the top of the stack. www.ThesisScientist.comA General Activation Record www.ThesisScientist.comActivation Record  Temporary values  Local data  A saved machine status  An “access link”  A control link  Space for the return value of the called function  The actual parameters used by the calling procedure www.ThesisScientist.comDownward-growing stack of activation records www.ThesisScientist.comDesigning Calling Sequences  Values communicated between caller and callee are generally placed at the beginning of callee’s activation record  Fixed-length items: are generally placed at the middle  Items whose size may not be known early enough: are placed at the end of activation record  We must locate the top-of-stack pointer judiciously: a common approach is to have it point to the end of fixed length fields. www.ThesisScientist.comDivision of tasks between caller and callee www.ThesisScientist.comcalling sequence  The caller evaluates the actual parameters  The caller stores a return address and the old value of top-sp into the callee's activation record.  The callee saves the register values and other status information.  The callee initializes its local data and begins execution. www.ThesisScientist.comcorresponding return sequence  The callee places the return value next to the parameters  Using information in the machine-status field, the callee restores top-sp and other registers, and then branches to the return address that the caller placed in the status field.  Although top-sp has been decremented, the caller knows where the return value is, relative to the current value of top-sp; the caller therefore may use that value. www.ThesisScientist.comAccess to dynamically allocated arrays www.ThesisScientist.comML  ML is a functional language  Variables are defined, and have their unchangeable values initialized, by a statement of the form: val (name) = (expression)  Functions are defined using the syntax: fun (name) ( (arguments) ) = (body)  For function bodies we shall use let-statements of the form: let (list of definitions) in (statements) end www.ThesisScientist.comA version of quicksort, in ML style, using nested functions www.ThesisScientist.comAccess links for finding nonlocal data www.ThesisScientist.comSketch of ML program that uses function- parameters