Procedure Call and Return

Total Page:16

File Type:pdf, Size:1020Kb

Procedure Call and Return Chapter 11 Procedure Call and Return This chapter discusses the design of code fragments which support procedure call and return in both recursive and non-recursive programming languages. To aid the discussion in later chapters it includes a model of procedure call and return based on the notion of a procedure activation record. A procedure activation is a special case of a `micro-process',1 and the same model can explain the operation of languages such as SIMULA 67 whose control structures are not restricted to simple procedure call and return. It also helps to explain how restrictions on the use of data and procedures in the source language can allow restricted (and therefore less costly) implementations of the general procedure call and return mechanism. The mechanism of procedure call and return in FORTRAN is briefly discussed: then I concentrate on the mechanisms of stack handling which are required to implement procedure call and return in a recursive language on a conventional object machine. 11.1 The Tasks of Procedure Call and Return Fragments Each procedure body in the source program is represented by a section of in- structions in the object program. When a procedure has been called, and before it returns, various items of information represent the state of the current pro- cedure activation. The instruction pointer defines a position in the code, the contents of the data frame (see chapters 1 and 8) define the values both of the parameters and of any data objects owned by the activation, and an explicit or implicit collection of pointers defines the activation's environment { those non-local data frames which the current procedure activation may access. Note the distinction between the instructions of the procedure body, the data frame set up when the procedure is called and the procedure activation proper, which 1 `Micro' process because a process in many languages can be made up of many micro- processes. 193 194 CHAPTER 11. PROCEDURE CALL AND RETURN Call 1. Allocate space for the data frame (activation record) of the called proce- dure. 2. Prepare information about the arguments of the procedure call and place it in the parameter slots of the new data frame (or in some pre-arranged locations). 3. Set up environment pointers to allow the new activation access to other data frames (e.g. those of textually enclosing blocks or procedures in block- structured languages). 4. Save the current data frame/ environment/ instruction pointers and create new values for the new activation. 5. Stop execution of the current procedure activation and start that of the new (called) activation. Return 1. Store the procedure result in a pre-arranged register or location. 2. Reload the calling procedure activation's data frame/ environment/ in- struction pointers. 3. Stop execution of the called procedure activation and resume execution of the calling activation. Garbage Collection Reclaim the space allocated for the data frame (activation record) of the called procedure. Figure 11.1: Tasks of procedure call and return fragments 11.1. TASKS OF PROCEDURE CALL AND RETURN 195 is defined by a position in the code together with the contents of the data frame and linkages to other data frames (activation records). When execution of the procedure body reaches a point at which the current pro- cedure calls another procedure, or calls itself recursively, the current activation is halted, the items of information which record its state are saved and similar information is set up for the newly created procedure activation. In a recursive language the action of calling a procedure involves the acquisition of space for the data frame of the new activation, usually taken from a stack. When execution of the new activation reaches a point in the procedure body which corresponds to a procedure return, the stored items of information which defined the state of the calling activation are reloaded, and execution of the calling procedure's instruction sequence continues from the point indicated by the instruction pointer. In a recursive language the space acquired for the data frame of the returning procedure activation must be recovered at some stage { usually this means adjusting the stack during or after the sequence of instruc- tions which implement the procedure return. Manipulating data frame pointers, acquiring and releasing data frame space are all part of the maintenance of the Activation Record Structure introduced in chapters 1 and 4. The tasks which must be carried out during execution of procedure call and return are summarised in figure 11.1. Efficiency of execution comes not only from careful design of the individual code fragments which carry out these tasks but also from careful design of the source language to allow short-cuts in the execution of the object program. Restrictions on the source language may re- duce its expressive power but can increase the efficiency of execution of object programs. In FORTRAN, for example, the allocation of data space can be performed once and for all at load-time when the program is loaded and before it is run. Procedure call and return are then more efficient (although not so much more efficient as you might expect { see the examples below and in chapter 13) but the penalty is that FORTRAN programmers can't use the expressive power of recursion. You can't write in FORTRAN, for example, the sort of recursive procedures which are used in this book to illustrate the translation of a parse tree into object code. Conventional recursive languages are also restricted, though less so than FOR- TRAN, in order that data frames can be allocated from a stack. In PASCAL and ALGOL 60 the type of result which can be returned from a procedure or as- signed to a location is restricted so that there can be no pointers to a procedure activation's data frame when it returns; ALGOL 68 imposes similar restrictions but in a less severe form (see chapter 14 for a discussion of the problems this causes). Only SIMULA 67 among the popular compiled languages uses the fully general call and return mechanism, as part of the implementation of classes, and as a result allows the most general form of programming. The cost of generality is relative inefficiency { simple programs tend to run slower in SIMULA than 196 CHAPTER 11. PROCEDURE CALL AND RETURN call declaration argument prologue preparation procedure precall body housekeeping epilogue JSUB ..... postcall RETN ...... housekeeping Figure 11.2: Layout of code fragments in procedure call and declaration they might in, say, PASCAL { but the benefit of generality is that new ways of programming are made possible. In particular SIMULA 67 allows co-processing, which may prove as much of an influence on program design in the future as recursion has proved in the past. Figure 11.1 does not include the checking of compatibility between arguments and parameter specifications (number of arguments, type, kind, etc.) as a task of the object program. Such checks are rarely necessary, are expensive to exe- cute and are too often included in place of more convenient and more efficient compile-time checks. Chapter 12 concentrates on the topic of argument pass- ing and on ways of avoiding run-time argument/parameter checks in modern languages. FORTRAN is the major language in current use which requires run- time argument/parameter checks and yet in implementations of FORTRAN, for the sake of efficiency, such checks are almost never included. 11.2 Layout of Procedure Call and Return Fragments The number and complexity of the tasks set down in figure 11.1 suggest already that it takes more than a single JSUB instruction to call a procedure and more than a single RETN instruction to return to the calling procedure. The layout of code fragments in the object program is illustrated in figure 11.2: the fragments in the calling procedure would be generated as part of the translation of an expression or a statement and the fragments in the called procedure as part of the translation of the procedure declaration. 11.3. RECURSION AND THE `EFFICIENCY' OF FORTRAN 197 procedure printint(num : integer); begin if num>10 then printint(num div 10); printdigit(num mod 10) end; Figure 11.3: Printing an integer main program: CALL A CALL B CALL C CALL D STOP END data frames: main A B C D program Figure 11.4: Space allocation at load time The cost of executing a procedure call is therefore the cost of executing all the fragments shown in figure 11.2 { argument preparation, precall housekeeping, JSUB, prologue, procedure body, epilogue, RETN and postcall housekeeping. Min- imising the cost of a procedure call means minimising this total execution cost. In most cases the cost is reduced by shortening and speeding-up the operation of the run-time support fragments { the `overheads' of the procedure call { but it may occasionally be worthwhile to increase the overhead cost in order to speed up the execution of the procedure body. Examples in which this is so are given in the discussion below of `call-by-result' in FORTRAN and in the discussion in chapter 13 of the relative merits of environment links and display vectors for non-local data addressing. In order to minimise object program size, as many as possible of the tasks defined in figure 11.1 should be performed in the called procedure (i.e. in the prologue and epilogue fragments) rather than in the fragments which occur in the calling procedure. Since there are surely never more procedure declarations than there are procedure calls in the source program, shortening the procedure call at the expense of the prologue and epilogue must lead to a smaller object program.
Recommended publications
  • A Quick Guide to Southeast Florida's Coral Reefs
    A Quick Guide to Southeast Florida’s Coral Reefs DAVID GILLIAM NATIONAL CORAL REEF INSTITUTE NOVA SOUTHEASTERN UNIVERSITY Spring 2013 Prepared by the Land-based Sources of Pollution Technical Advisory Committee (TAC) of the Southeast Florida Coral Reef Initiative (SEFCRI) BRIAN WALKER NATIONAL CORAL REEF INSTITUTE, NOVA SOUTHEASTERN Southeast Florida’s coral-rich communities are more valuable than UNIVERSITY the Spanish treasures that sank nearby. Like the lost treasures, these amazing reefs lie just a few hundred yards off the shores of Martin, Palm Beach, Broward and Miami-Dade Counties where more than one-third of Florida’s 19 million residents live. Fishing, diving, and boating help attract millions of visitors to southeast Florida each year (30 million in 2008/2009). Reef-related expen- ditures generate $5.7 billion annually in income and sales, and support more than 61,000 local jobs. Such immense recreational activity, coupled with the pressures of coastal development, inland agriculture, and robust cruise and commercial shipping industries, threaten the very survival of our reefs. With your help, reefs will be protected from local stresses and future generations will be able to enjoy their beauty and economic benefits. Coral reefs are highly diverse and productive, yet surprisingly fragile, ecosystems. They are built by living creatures that require clean, clear seawater to settle, mature and reproduce. Reefs provide safe havens for spectacular forms of marine life. Unfortunately, reefs are vulnerable to impacts on scales ranging from local and regional to global. Global threats to reefs have increased along with expanding ART SEITZ human populations and industrialization. Now, warming seawater temperatures and changing ocean chemistry from carbon dioxide emitted by the burning of fossil fuels and deforestation are also starting to imperil corals.
    [Show full text]
  • Evidence and Counter-Evidence : Essays in Honour of Frederik
    Evidence and Counter-Evidence Studies in Slavic and General Linguistics Series Editors: Peter Houtzagers · Janneke Kalsbeek · Jos Schaeken Editorial Advisory Board: R. Alexander (Berkeley) · A.A. Barentsen (Amsterdam) B. Comrie (Leipzig) - B.M. Groen (Amsterdam) · W. Lehfeldt (Göttingen) G. Spieß (Cottbus) - R. Sprenger (Amsterdam) · W.R. Vermeer (Leiden) Amsterdam - New York, NY 2008 Studies in Slavic and General Linguistics, vol. 32 Evidence and Counter-Evidence Essays in honour of Frederik Kortlandt Volume 1: Balto-Slavic and Indo-European Linguistics edited by Alexander Lubotsky Jos Schaeken Jeroen Wiedenhof with the assistance of Rick Derksen and Sjoerd Siebinga Cover illustration: The Old Prussian Basel Epigram (1369) © The University of Basel. The paper on which this book is printed meets the requirements of “ISO 9706: 1994, Information and documentation - Paper for documents - Requirements for permanence”. ISBN: set (volume 1-2): 978-90-420-2469-4 ISBN: 978-90-420-2470-0 ©Editions Rodopi B.V., Amsterdam - New York, NY 2008 Printed in The Netherlands CONTENTS The editors PREFACE 1 LIST OF PUBLICATIONS BY FREDERIK KORTLANDT 3 ɽˏ˫˜ˈ˧ ɿˈ˫ː˧ˮˬː˧ ʡ ʤʡʢʡʤʦɿʄʔʦʊʝʸʟʡʞ ʔʒʩʱʊʟʔʔ ʡʅʣɿʟʔʱʔʦʊʝʸʟʷʮ ʄʣʊʞʊʟʟʷʮ ʤʡʻʒʡʄ ʤʝɿʄʼʟʤʘʔʮ ʼʒʷʘʡʄ 23 Robert S.P. Beekes PALATALIZED CONSONANTS IN PRE-GREEK 45 Uwe Bläsing TALYSCHI RöZ ‘SPUR’ UND VERWANDTE: EIN BEITRAG ZUR IRANISCHEN WORTFORSCHUNG 57 Václav Blažek CELTIC ‘SMITH’ AND HIS COLLEAGUES 67 Johnny Cheung THE OSSETIC CASE SYSTEM REVISITED 87 Bardhyl Demiraj ALB. RRUSH, ON RAGUSA UND GR. ͽΚ̨ 107 Rick Derksen QUANTITY PATTERNS IN THE UPPER SORBIAN NOUN 121 George E. Dunkel LUVIAN -TAR AND HOMERIC ̭ш ̸̫ 137 José L. García Ramón ERERBTES UND ERSATZKONTINUANTEN BEI DER REKON- STRUKTION VON INDOGERMANISCHEN KONSTRUKTIONS- MUSTERN: IDG.
    [Show full text]
  • RML Algol 60 Compiler Accepts the Full ASCII Character Set Described in the Manual
    I I I · lL' I I 1UU, Alsol 60 CP/M 5yst.. I I , I I '/ I I , ALGOL 60 VERSION 4.8C REI.!AS!- NOTE I I I I CP/M Vers1on·2 I I When used with CP/M version 2 the Algol Ifste. will accept disk drive Dames extending from A: to P: I I I ASSEMBLY CODE ROUTINES I I .'n1~ program CODE.ALG and CODE.ASe 1s an aid to users who wish ·to add I their own code routines to the runtime system. The program' produc:es an I output file which contains a reconstruction of the INPUT, OUTPUT, IOC and I ERROR tables described in the manual. 1111s file forms the basis of an I assembly code program to which users may edit in their routines... Pat:ts I not required may be removed as desired. The resulting program should I then be assembled and overlaid onto the runtime system" using DDT, the I resulti;lg code being SAVEd as a new runtime system. It 1s important that. I the CODE program be run using the version of the runtimesY$tem to. which I the code routines are to be linked else the tables produced DUly, be·\, I incompatible. - I I I I Another example program supplied. 1. QSORT. the sortiDI pro~edure~, I described in the manual. I I I I I I I I I I , I I I -. I I 'It I I I I I I I I I I I ttKL Aleol 60 C'/M Systea I LONG INTEGER ALGOL Arun-L 1s a version of the RML zao Algol system 1nwh1c:h real variables are represented, DOt in the normal mantissalexponent form but rather as 32 .bit 2 s complement integers.
    [Show full text]
  • Dissolving a Half Century Old Problem About the Implementation of Procedures
    JID:SCICO AID:2123 /FLA [m3G; v1.221; Prn:28/08/2017; 16:24] P.1(1-12) Science of Computer Programming ••• (••••) •••–••• Contents lists available at ScienceDirect Science of Computer Programming www.elsevier.com/locate/scico Dissolving a half century old problem about the implementation of procedures Gauthier van den Hove CWI, SWAT, Science Park 123, 1098 XG Amsterdam, The Netherlands a r t i c l e i n f o a b s t r a c t Article history: We investigate the semantics of the procedure concept, and of one of the main techniques Received 21 June 2014 introduced by E. W. Dijkstra in his article Recursive Programming to implement it, namely Received in revised form 11 July 2017 the “static link,” sometimes also called “access link” or “lexical link.” We show that a Accepted 14 July 2017 confusion about that technique persists, even in recent textbooks. Our analysis is meant to Available online xxxx clarify the meaning of that technique, and of the procedure concept. Our main contribution Keywords: is to propose a better characterization of the “static link.” © Static link 2017 Elsevier B.V. All rights reserved. Block Closure Lexical scope Procedure 1. Introduction One of the first concepts introduced in the development of programming languages is the procedure concept. Its first precise definition appears in the ALGOL 60 Report, together with the static (or lexical) scope rule. Its implementation poses a number of difficulties, and the now classical solution to solve these difficulties, for ALGOL-like languages, was proposed by Dijkstra in his article Recursive Programming [1].
    [Show full text]
  • Workplace Learning Connection Annual Report 2019-20
    2019 – 2020 ANNUAL REPORT SERVING SCHOOLS, STUDENTS, EMPLOYERS, AND COMMUNITIES IN BENTON, CEDAR, IOWA, JOHNSON, JONES, LINN, AND WASHINGTON COUNTIES Connecting today’s students to tomorrow’s careers LINN COUNTY JONES COUNTY IOWA COUNTY CENTER REGIONAL CENTER REGIONAL CENTER 200 West St. 1770 Boyson Rd. 220 Welter Dr. Williamsburg, Iowa 52361 Hiawatha, Iowa 52233 Monticello, Iowa 52310 866-424-5669 319-398-1040 855-467-3800 KIRKWOOD REGIONAL CENTER WASHINGTON COUNTY AT THE UNIVERSITY OF IOWA REGIONAL CENTER 2301 Oakdale Blvd. 2192 Lexington Blvd. Coralville, Iowa 52241 Washington, Iowa 52353 319-887-3970 855-467-3900 BENTON COUNTY CENTER CEDAR COUNTY CENTER 111 W. 3rd St. 100 Alexander Dr., Suite 2 WORKPLACE LEARNING Vinton, Iowa 52349 Tipton, Iowa 52772 CONNECTION 866-424-5669 855-467-3900 2019 – 2020 AT A GLANCE Thank you to all our contributors, supporters, and volunteers! Workplace Learning Connection uses a diverse funding model that allows all partners to sustain their participation in an equitable manner. Whether a partners’ interest are student career development, future workforce development, or regional economic development, all funds provide age-appropriate career awareness and exploration services matching the mission of WLC and our partners. Funding the Connections… 2019 – 2020 Revenue Sources Kirkwood Community College (General Fund) $50,000 7% State and Federal Grants (Kirkwood: Perkins, WTED, IIG) $401,324 54% Grant Wood Area Education Agency $40,000 5% K through 12 School Districts Fees for Services $169,142 23% Contributions,
    [Show full text]
  • Think Complexity: Exploring Complexity Science in Python
    Think Complexity Version 2.6.2 Think Complexity Version 2.6.2 Allen B. Downey Green Tea Press Needham, Massachusetts Copyright © 2016 Allen B. Downey. Green Tea Press 9 Washburn Ave Needham MA 02492 Permission is granted to copy, distribute, transmit and adapt this work under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://thinkcomplex.com/license. If you are interested in distributing a commercial version of this work, please contact the author. The LATEX source for this book is available from https://github.com/AllenDowney/ThinkComplexity2 iv Contents Preface xi 0.1 Who is this book for?...................... xii 0.2 Changes from the first edition................. xiii 0.3 Using the code.......................... xiii 1 Complexity Science1 1.1 The changing criteria of science................3 1.2 The axes of scientific models..................4 1.3 Different models for different purposes............6 1.4 Complexity engineering.....................7 1.5 Complexity thinking......................8 2 Graphs 11 2.1 What is a graph?........................ 11 2.2 NetworkX............................ 13 2.3 Random graphs......................... 16 2.4 Generating graphs........................ 17 2.5 Connected graphs........................ 18 2.6 Generating ER graphs..................... 20 2.7 Probability of connectivity................... 22 vi CONTENTS 2.8 Analysis of graph algorithms.................. 24 2.9 Exercises............................. 25 3 Small World Graphs 27 3.1 Stanley Milgram......................... 27 3.2 Watts and Strogatz....................... 28 3.3 Ring lattice........................... 30 3.4 WS graphs............................ 32 3.5 Clustering............................ 33 3.6 Shortest path lengths...................... 35 3.7 The WS experiment....................... 36 3.8 What kind of explanation is that?............... 38 3.9 Breadth-First Search.....................
    [Show full text]
  • Latest Results from the Procedure Calling Test, Ackermann's Function
    Latest results from the procedure calling test, Ackermann’s function B A WICHMANN National Physical Laboratory, Teddington, Middlesex Division of Information Technology and Computing March 1982 Abstract Ackermann’s function has been used to measure the procedure calling over- head in languages which support recursion. Two papers have been written on this which are reproduced1 in this report. Results from further measurements are in- cluded in this report together with comments on the data obtained and codings of the test in Ada and Basic. 1 INTRODUCTION In spite of the two publications on the use of Ackermann’s Function [1, 2] as a mea- sure of the procedure-calling efficiency of programming languages, there is still some interest in the topic. It is an easy test to perform and the large number of results ob- tained means that an implementation can be compared with many other systems. The purpose of this report is to provide a listing of all the results obtained to date and to show their relationship. Few modern languages do not provide recursion and hence the test is appropriate for measuring the overheads of procedure calls in most cases. Ackermann’s function is a small recursive function listed on page 2 of [1] in Al- gol 60. Although of no particular interest in itself, the function does perform other operations common to much systems programming (testing for zero, incrementing and decrementing integers). The function has two parameters M and N, the test being for (3, N) with N in the range 1 to 6. Like all tests, the interpretation of the results is not without difficulty.
    [Show full text]
  • Steven Adriaensen, on the Semi-Automated Design Of
    Faculty of Science and Bio-Engineering Sciences Department of Computer Science Artificial Intelligence Laboratory On the Semi-automated Design of Reusable Heuristics with applications to hard combinatorial optimization Dissertation submitted in fulfilment of the requirements for the degree of Doctor of Science: Computer Science Steven Adriaensen Promotor: Prof. Dr. Ann Nowé (Vrije Universiteit Brussel) © 2018 Steven Adriaensen All rights reserved. No parts of this book may be reproduced or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the author. Abstract These days, many scientific and engineering disciplines rely on standardization and auto- mated tools. Somewhat ironically, the design of the algorithms underlying these tools is often a highly manual, ad hoc, experience- and intuition-driven process, commonly regarded as an “art” rather than a “science”. The research performed in the scope of this dissertation is geared towards improving the way we design algorithms. Here, we treat algorithm design itself as a computational problem, which we refer to as the Algorithm Design Problem (ADP). In a sense, we study “algorithms for designing algorithms”. The main topic we investigate in this framework is the possibility of solving the ADP automatically. Letting computers, rather than humans, design algorithms has numerous potential benefits. The idea of automating algorithm design is definitely not “new”. At- tempts to do so can be traced back to the origins of computer science, and, ever since, the ADP, in one form or another, has been considered in many different research communities. Therefore, we first present an overview of this vast and highly fragmented field, relating the different approaches, discussing their respective strengths and weaknesses, towards enabling a more unified approach to automated algorithm design.
    [Show full text]
  • Machine Models for Type-2 Polynomial-Time Bounded Functionals
    Syracuse University SURFACE College of Engineering and Computer Science - Former Departments, Centers, Institutes and College of Engineering and Computer Science Projects 1997 Semantics vs. Syntax vs. Computations: Machine models for type-2 polynomial-time bounded functionals James S. Royer Syracuse University, School of Computer and Information Science, [email protected] Follow this and additional works at: https://surface.syr.edu/lcsmith_other Part of the Computer Sciences Commons Recommended Citation Royer, James S., "Semantics vs. Syntax vs. Computations: Machine models for type-2 polynomial-time bounded functionals" (1997). College of Engineering and Computer Science - Former Departments, Centers, Institutes and Projects. 19. https://surface.syr.edu/lcsmith_other/19 This Article is brought to you for free and open access by the College of Engineering and Computer Science at SURFACE. It has been accepted for inclusion in College of Engineering and Computer Science - Former Departments, Centers, Institutes and Projects by an authorized administrator of SURFACE. For more information, please contact [email protected]. Semantics vs. Syntax vs. Computations Machine Models for Type-2 Polynomial-Time Bounded Functionals Intermediate Draft, Revision 2 + ǫ James S. Royer School of Computer and Information Science Syracuse University Syracuse, NY 13244 USA Email: [email protected] Abstract This paper investigates analogs of the Kreisel-Lacombe-Shoen®eld Theorem in the con- text of the type-2 basic feasible functionals. We develop a direct, polynomial-time analog of effective operation in which the time boundingon computationsismodeled after Kapronand Cook's scheme fortheirbasic poly- nomial-time functionals. We show that if P = NP, these polynomial-time effective op- erations are strictly more powerful on R (the class of recursive functions) than the basic feasible functions.
    [Show full text]
  • International Standard ISO/IEC 14977
    ISO/IEC 14977 : 1996(E) Contents Page Foreword ................................................ iii Introduction .............................................. iv 1Scope:::::::::::::::::::::::::::::::::::::::::::::: 1 2 Normative references :::::::::::::::::::::::::::::::::: 1 3 Definitions :::::::::::::::::::::::::::::::::::::::::: 1 4 The form of each syntactic element of Extended BNF :::::::::: 1 4.1 General........................................... 2 4.2 Syntax............................................ 2 4.3 Syntax-rule........................................ 2 4.4 Definitions-list...................................... 2 4.5 Single-definition . 2 4.6 Syntactic-term...................................... 2 4.7 Syntacticexception.................................. 2 4.8 Syntactic-factor..................................... 2 4.9 Integer............................................ 2 4.10 Syntactic-primary.................................... 2 4.11 Optional-sequence................................... 3 4.12 Repeatedsequence................................... 3 4.13 Grouped sequence . 3 4.14 Meta-identifier...................................... 3 4.15 Meta-identifier-character............................... 3 4.16 Terminal-string...................................... 3 4.17 First-terminal-character................................ 3 4.18 Second-terminal-character . 3 4.19 Special-sequence.................................... 3 4.20 Special-sequence-character............................. 3 4.21 Empty-sequence....................................
    [Show full text]
  • American National Standard Pascal Computer Programming Language
    ANSI/IEEE770X3.97-1983 American National Standard Pascal Computer Programming Language -JK- 468 hAf - A8A3 the Fe< , #109 i 1985 Distributed in cooperation with Wiley-Interscience, a division of John Wiley & Sons, Inc. FIPS PUB 109 See Notice on Inside IEEE Standard Pascal Computer Programming Language Published by The Institute of Electrical and Electronics Engineers, Inc Distributed in cooperation with Wiley-Interscience, a division of John Wiley & Sons, Inc ANSI/IEEE 770X3.97-1983 An American National Standard IEEE Standard Pascal Computer Programming Language Joint Sponsors IEEE Pascal Standards Committee of the IEEE Computer Society and ANSI/X3J9 of American National Standards Committee X3 Approved September 17, 1981 IEEE Standards Board Approved December 16, 1982 American National Standards Institute This standard has been adopted for U.S. federal government use. Details concerning its use within the federal government are contained in FIPS PUB 109, Pascal Computer Programming Language. For a complete list of the publications available in the FEDERAL INFORMATION PROCESSING STAN¬ DARDS Series, write to the Standards Processing Coordinator, Institute for Com¬ puter Sciences and Technology, National Bureau of Standards, Gaithersburg, MD 20899, U.S.A. Third Printing (8% X 11) for NTIS ISBN 0-471-88944-X Library of Congress Catalog Number 82-84259 © Copyright 1979 Institute of Electrical and Electronics Engineers, Inc © Copyright 1983 American National Standards Institute, Inc and Institute of Electrical and Electronics Engineers, Inc No part of this publication may be reproduced in any form, in an electronic retrieval system or otherwise, without the prior written permission of the publisher. Published by The Institute of Electrical and Electronics Engineers, Inc 345 East 47th Street, New York, NY 10017 January 7, 1983 SH08912 Foreword (This Foreword is not a part of ANSI/IEEE770X3.97-1983, IEEE Standard Pascal Com¬ puter Programming Language.) This standard provides an unambiguous and machine independent defini¬ tion of the language Pascal.
    [Show full text]
  • Syntactic Control of Interference Revisited
    Syracuse University SURFACE College of Engineering and Computer Science - Former Departments, Centers, Institutes and College of Engineering and Computer Science Projects 1995 Syntactic Control of Interference Revisited Peter W. O'Hearn Syracuse University A. J. Power University of Edinburgh M. Takeyama University of Edinburgh R. D. Tennent Queen's University Follow this and additional works at: https://surface.syr.edu/lcsmith_other Part of the Programming Languages and Compilers Commons Recommended Citation O'Hearn, Peter W.; Power, A. J.; Takeyama, M.; and Tennent, R. D., "Syntactic Control of Interference Revisited" (1995). College of Engineering and Computer Science - Former Departments, Centers, Institutes and Projects. 12. https://surface.syr.edu/lcsmith_other/12 This Article is brought to you for free and open access by the College of Engineering and Computer Science at SURFACE. It has been accepted for inclusion in College of Engineering and Computer Science - Former Departments, Centers, Institutes and Projects by an authorized administrator of SURFACE. For more information, please contact [email protected]. OHearn et al Syntactic Control of Interference Revisited P W OHearn Syracuse University Syracuse New York USA A J Power and M Takeyama University of Edinburgh Edinburgh Scotland EH JZ R D Tennent Queens University Kingston Canada KL N Dedicated to John C Reynolds in honor of his th birthday Abstract In Syntactic Control of Interference POPL J C Reynolds prop oses three design principles intended to constrain the scop e
    [Show full text]