The Fortran I Compiler

Total Page:16

File Type:pdf, Size:1020Kb

The Fortran I Compiler the Top T HEME ARTICLE THE FORTRAN I COMPILER The Fortran I compiler was the first demonstration that it is possible to automatically generate efficient machine code from high-level languages. It has thus been enormously influential. This article presents a brief description of the techniques used in the Fortran I compiler for the parsing of expressions, loop optimization, and register allocation. uring initial conversations about the At the same time, it is almost universally topic of this article, it became evident agreed that the most important event of the 20th that we can’t identify the top compiler century in compiling—and in computing—was algorithm of the century if, as the the development of the first Fortran compiler DCiSE editors originally intended, we consider only between 1954 and 1957. By demonstrating that the parsing, analysis, and code optimization algo- it is possible to automatically generate quality rithms found in undergraduate compiler text- machine code from high-level descriptions, the books and the research literature. Making such a IBM team led by John Backus opened the door selection seemed, at first, the natural thing to do, to the Information Age. because fundamental compiler algorithms belong The impressive advances in scientific comput- to the same class as the other algorithms discussed ing, and in computing in general, during the past in this special issue. In fact, fundamental compiler half century would not have been possible with- algorithms, like the other algorithms in this issue, out high-level languages. Although the word al- are often amenable to formal descriptions and, as gorithm is not usually used in that sense, from a result, to mathematical treatment. the definition it follows that a compiler is an al- However, in the case of compilers the difficulty gorithm and, therefore, we can safely say that the is that, paraphrasing John Donne, no algorithm is Fortran I translator is the 20th century’s top an island, entire of itself. A compiler’s components compiler algorithm. are designed to work together to complement each other. Furthermore, next to this conceptual objec- tion, there is the very practical issue that we don’t The language have enough information to decide whether any The IBM team not only developed the com- of the fundamental compiler algorithms have had piler but also designed the Fortran language, and a determinant impact on the quality of compilers. today, almost 50 years later, Fortran is still the language of choice for scientific programming. The language has evolved, but there is a clear 1521-9615/00/$10.00 © 2000 IEEE family resemblance between Fortran I and to- day’s Fortran 77, 90, and 95. Fortran’s influence DAVID PADUA is also evident in the most popular languages to- University of Illinois at Urbana-Champaign day, including numerically oriented languages 70 COMPUTING IN SCIENCE & ENGINEERING such as Matlab as well as general-purpose lan- The flip side of using novel and sophisticated guages such as C and Java. compiler algorithms was implementation and Ironically, Fortran has been the target of crit- debugging complexity. Late delivery and many icism almost from the beginning, and even bugs created more than a few Fortran skeptics, Backus voiced serious objections: “‘von Neuman but Fortran eventually prevailed: languages’ [like Fortran] create enormous, un- necessary intellectual roadblocks in thinking It gradually got to the point where a program in about programs and in creating the higher-level Fortran had a reasonable expectancy of compiling combining forms required in a powerful pro- all the way through and maybe even of running. gramming methodology.”1 This gradual change in status from an experimen- Clearly, some language features, such as implicit tal to a working system was true of most compil- typing, were not the best possible choices, but For- ers. It is stressed here in the case of Fortran only tran’s simple, direct design enabled the develop- because Fortran is now almost taken for granted, ment of very effective compilers. Fortran I was the as if it were built into the computer hardware.2 first of a long line of very good Fortran compilers that IBM and other companies developed. These powerful compilers are perhaps the single most Optimization techniques important reason for Fortran’s success. The Fortran I compiler was the first major project in code optimization. It tackled problems of crucial importance whose general solution The compiler was an important research focus in compiler The Fortran I compiler was fairly small by to- technology for several decades. Many classical day’s standards. It consisted of 23,500 assembly techniques for compiler analysis and optimiza- language instructions and required 18 person- tion can trace their origins and inspiration to the years to develop. Modern commercial compilers Fortran I compiler. In addition, some of the ter- might contain 100 times more instructions and minology the Fortran I implementers used al- require many more person-years to develop. most 50 years ago is still in use today. Two of the However, its size not withstanding, the compiler terms today’s compiler writers share with the was a very sophisticated and complex program. It 1950s IBM team are basic block (“a stretch of pro- performed many important optimizations—some gram which has a single entry point and a single quite elaborate even by today’s standards—and it exit point”3) and symbolic/real registers. Symbolic “produced code of such efficiency that its output registers are variable names the compiler uses in would startle the programmers who studied it.”1 an intermediate form of the code to be gener- However, as expected, the success was not uni- ated. The compiler eventually replaces symbolic versal.2 The compiler seemingly generated very registers with real ones that represent the target good code for regular computations; however, ir- machine’s registers. regular computations, including sparse and sym- Although more general and perhaps more bolic computations, are generally more difficult to powerful methods have long since replaced those analyze and transform. Based on my understand- used in the Fortran I compiler, it is important to ing of the techniques used in the Fortran I com- discuss Fortran I methods to show their ingenu- piler, I believe that it did not do as well on these ity and to contrast them with today’s techniques. types of computations. A manifestation of the dif- ficulties with irregular computations is that sub- Parsing expressions scripted subscripts, such as A(M(I,J),N(I,J)), One of the difficulties designers faced was how were not allowed in Fortran I. to compile arithmetic expressions taking into The compiler’s sophistication was driven by account the precedence of operators. That is, the need to produce efficient object code. The in the absence of parentheses, exponentiation project would not have succeeded otherwise. Ac- should be evaluated first, then products and di- cording to Backus: visions, followed by additions and subtractions. Operator precedence was needed to avoid ex- It was our belief that if Fortran, during its first tensive use of parentheses and the problems as- months, were to translate any reasonable scientific sociated with them. For example, IT, an experi- source program into an object program only half mental compiler completed by A. Perlis and J.W. as fast as its hand-coded counterpart, the accep- Smith in 1956 at the Carnegie Institute of Tech- tance of our system would be in serious danger.1 nology,4 did not assume operator precedence. As JANUARY/FEBRUARY 2000 71 Donald Knuth pointed out: “The lack of operator copy propagation followed by dead-code elimination.6 priority (often called precedence or hierarchy) in Given an assignment x = a, copy propagation the IT language was the most frequent single substitutes a for occurrences of x whenever it can cause of errors by the users of that compiler.”5 determine it is safe to do so. Dead-code elimina- The Fortran I compiler would expand each tion deletes statements that do not affect the pro- operator with a sequence of parentheses. In a gram’s output. Notice that if a is propagated to simplified form of the algorithm, it would all uses of x, x = a can be deleted. The Fortran I compiler also identified permu- • replace + and – with ))+(( and ))-((, tations of operations, which reduced memory ac- respectively; cess and eliminated redundant computations re- • replace * and / with )*( and )/(, respec- sulting from common subexpressions.3 It is tively; interesting to contrast the parsing algorithm of • add (( at the beginning of each expression Fortran I with more advanced parsing algorithms and after each left parenthesis in the original developed later on. These algorithms, which are expression; and much easier to understand, are based on syntac- • add )) at the end of the expression and be- tic representation of expressions such as:7 fore each right parenthesis in the original expression. expression = term [ [ + | −] term]... term = factor [ [ * | / ] factor]... Although not obvious, the factor = constant | variable | (expression ) It is interesting to algorithm was correct, and, in the words of Knuth, “The re- Here, a factor is a constant, variable, or expression contrast the parsing sulting formula is properly enclosed by parentheses. A term is a factor possibly parenthesized, believe it or followed by a sequence of factors separated by * algorithm of Fortran I not.”5 For example, the expres- or /, and an expression is a term possibly followed sion A + B * C was expanded by a sequence of terms separated by + or −. The with more advanced as ((A))+((B)*(C)). The precedence of operators is implicit in the notation: translation algorithm then terms (sequences of products and divisions) must parsing algorithms. scanned the resulting expres- be formed before expressions (sequences of addi- sion from left to right and in- tions and subtractions).
Recommended publications
  • Donald Knuth Fletcher Jones Professor of Computer Science, Emeritus Curriculum Vitae Available Online
    Donald Knuth Fletcher Jones Professor of Computer Science, Emeritus Curriculum Vitae available Online Bio BIO Donald Ervin Knuth is an American computer scientist, mathematician, and Professor Emeritus at Stanford University. He is the author of the multi-volume work The Art of Computer Programming and has been called the "father" of the analysis of algorithms. He contributed to the development of the rigorous analysis of the computational complexity of algorithms and systematized formal mathematical techniques for it. In the process he also popularized the asymptotic notation. In addition to fundamental contributions in several branches of theoretical computer science, Knuth is the creator of the TeX computer typesetting system, the related METAFONT font definition language and rendering system, and the Computer Modern family of typefaces. As a writer and scholar,[4] Knuth created the WEB and CWEB computer programming systems designed to encourage and facilitate literate programming, and designed the MIX/MMIX instruction set architectures. As a member of the academic and scientific community, Knuth is strongly opposed to the policy of granting software patents. He has expressed his disagreement directly to the patent offices of the United States and Europe. (via Wikipedia) ACADEMIC APPOINTMENTS • Professor Emeritus, Computer Science HONORS AND AWARDS • Grace Murray Hopper Award, ACM (1971) • Member, American Academy of Arts and Sciences (1973) • Turing Award, ACM (1974) • Lester R Ford Award, Mathematical Association of America (1975) • Member, National Academy of Sciences (1975) 5 OF 44 PROFESSIONAL EDUCATION • PhD, California Institute of Technology , Mathematics (1963) PATENTS • Donald Knuth, Stephen N Schiller. "United States Patent 5,305,118 Methods of controlling dot size in digital half toning with multi-cell threshold arrays", Adobe Systems, Apr 19, 1994 • Donald Knuth, LeRoy R Guck, Lawrence G Hanson.
    [Show full text]
  • Modified Moments for Indefinite Weight Functions [2Mm] (A Tribute
    Modified Moments for Indefinite Weight Functions (a Tribute to a Fruitful Collaboration with Gene H. Golub) Martin H. Gutknecht Seminar for Applied Mathematics ETH Zurich Remembering Gene Golub Around the World Leuven, February 29, 2008 Martin H. Gutknecht Modified Moments for Indefinite Weight Functions My education in numerical analysis at ETH Zurich My teachers of numerical analysis: Eduard Stiefel [1909–1978] (first, basic NA course, 1964) Peter Läuchli [b. 1928] (ALGOL, 1965) Hans-Rudolf Schwarz [b. 1930] (numerical linear algebra, 1966) Heinz Rutishauser [1917–1970] (follow-up numerical analysis course; “selected chapters of NM” [several courses]; computer hands-on training) Peter Henrici [1923–1987] (computational complex analysis [many courses]) The best of all worlds? Martin H. Gutknecht Modified Moments for Indefinite Weight Functions My education in numerical analysis (cont’d) What did I learn? Gauss elimination, simplex alg., interpolation, quadrature, conjugate gradients, ODEs, FDM for PDEs, ... qd algorithm [often], LR algorithm, continued fractions, ... many topics in computational complex analysis, e.g., numerical conformal mapping What did I miss to learn? (numerical linear algebra only) QR algorithm nonsymmetric eigenvalue problems SVD (theory, algorithms, applications) Lanczos algorithm (sym., nonsym.) Padé approximation, rational interpolation Martin H. Gutknecht Modified Moments for Indefinite Weight Functions My first encounters with Gene H. Golub Gene’s first two talks at ETH Zurich (probably) 4 June 1971: “Some modified eigenvalue problems” 28 Nov. 1974: “The block Lanczos algorithm” Gene was one of many famous visitors Peter Henrici attracted. Fall 1974: GHG on sabbatical at ETH Zurich. I had just finished editing the “Lectures of Numerical Mathematics” of Heinz Rutishauser (1917–1970).
    [Show full text]
  • Fortran Reference Guide
    FORTRAN REFERENCE GUIDE Version 2018 TABLE OF CONTENTS Preface............................................................................................................ xv Audience Description......................................................................................... xv Compatibility and Conformance to Standards............................................................ xv Organization................................................................................................... xvi Hardware and Software Constraints...................................................................... xvii Conventions................................................................................................... xvii Related Publications........................................................................................ xviii Chapter 1. Language Overview............................................................................... 1 1.1. Elements of a Fortran Program Unit.................................................................. 1 1.1.1. Fortran Statements................................................................................. 1 1.1.2. Free and Fixed Source............................................................................. 2 1.1.3. Statement Ordering................................................................................. 2 1.2. The Fortran Character Set.............................................................................. 3 1.3. Free Form Formatting..................................................................................
    [Show full text]
  • SPSS to Orthosim File Conversion Utility Helpfile V.1.4
    SPSS to Orthosim File Conversion Utility Helpfile v.1.4 Paul Barrett Advanced Projects R&D Ltd. Auckland New Zealand email: [email protected] Web: www.pbarrett.net 30th December, 2019 Contents 3 Table of Contents Part I Introduction 5 1 Installation Details ................................................................................................................................... 7 2 Extracting Matrices from SPSS - Cut and Paste ................................................................................................................................... 8 3 Extracting Matrices from SPSS: Orthogonal Factors - E.x..c..e..l. .E..x..p..o..r.t................................................................................................................. 17 4 Extracting Matrices from SPSS: Oblique Factors - Exce.l. .E..x..p..o..r..t...................................................................................................................... 24 5 Creating Orthogonal Factor Orthosim Files ................................................................................................................................... 32 6 Creating Oblique Factor Orthosim Files ................................................................................................................................... 41 3 Paul Barrett Part I 6 SPSS to Orthosim File Conversion Utility Helpfile v.1.4 1 Introduction SPSS-to-Orthosim converts SPSS 11/12/13/14 factor loading and factor correlation matrices into the fixed-format .vf (simple ASCII text) files
    [Show full text]
  • Historical Perspective and Further Reading 162.E1
    2.21 Historical Perspective and Further Reading 162.e1 2.21 Historical Perspective and Further Reading Th is section surveys the history of in struction set architectures over time, and we give a short history of programming languages and compilers. ISAs include accumulator architectures, general-purpose register architectures, stack architectures, and a brief history of ARMv7 and the x86. We also review the controversial subjects of high-level-language computer architectures and reduced instruction set computer architectures. Th e history of programming languages includes Fortran, Lisp, Algol, C, Cobol, Pascal, Simula, Smalltalk, C+ + , and Java, and the history of compilers includes the key milestones and the pioneers who achieved them. Accumulator Architectures Hardware was precious in the earliest stored-program computers. Consequently, computer pioneers could not aff ord the number of registers found in today’s architectures. In fact, these architectures had a single register for arithmetic instructions. Since all operations would accumulate in one register, it was called the accumulator , and this style of instruction set is given the same name. For example, accumulator Archaic EDSAC in 1949 had a single accumulator. term for register. On-line Th e three-operand format of RISC-V suggests that a single register is at least two use of it as a synonym for registers shy of our needs. Having the accumulator as both a source operand and “register” is a fairly reliable indication that the user the destination of the operation fi lls part of the shortfall, but it still leaves us one has been around quite a operand short. Th at fi nal operand is found in memory.
    [Show full text]
  • John Mccarthy
    JOHN MCCARTHY: the uncommon logician of common sense Excerpt from Out of their Minds: the lives and discoveries of 15 great computer scientists by Dennis Shasha and Cathy Lazere, Copernicus Press August 23, 2004 If you want the computer to have general intelligence, the outer structure has to be common sense knowledge and reasoning. — John McCarthy When a five-year old receives a plastic toy car, she soon pushes it and beeps the horn. She realizes that she shouldn’t roll it on the dining room table or bounce it on the floor or land it on her little brother’s head. When she returns from school, she expects to find her car in more or less the same place she last put it, because she put it outside her baby brother’s reach. The reasoning is so simple that any five-year old child can understand it, yet most computers can’t. Part of the computer’s problem has to do with its lack of knowledge about day-to-day social conventions that the five-year old has learned from her parents, such as don’t scratch the furniture and don’t injure little brothers. Another part of the problem has to do with a computer’s inability to reason as we do daily, a type of reasoning that’s foreign to conventional logic and therefore to the thinking of the average computer programmer. Conventional logic uses a form of reasoning known as deduction. Deduction permits us to conclude from statements such as “All unemployed actors are waiters, ” and “ Sebastian is an unemployed actor,” the new statement that “Sebastian is a waiter.” The main virtue of deduction is that it is “sound” — if the premises hold, then so will the conclusions.
    [Show full text]
  • John Mccarthy – Father of Artificial Intelligence
    Asia Pacific Mathematics Newsletter John McCarthy – Father of Artificial Intelligence V Rajaraman Introduction I first met John McCarthy when he visited IIT, Kanpur, in 1968. During his visit he saw that our computer centre, which I was heading, had two batch processing second generation computers — an IBM 7044/1401 and an IBM 1620, both of them were being used for “production jobs”. IBM 1620 was used primarily to teach programming to all students of IIT and IBM 7044/1401 was used by research students and faculty besides a large number of guest users from several neighbouring universities and research laboratories. There was no interactive computer available for computer science and electrical engineering students to do hardware and software research. McCarthy was a great believer in the power of time-sharing computers. John McCarthy In fact one of his first important contributions was a memo he wrote in 1957 urging the Director of the MIT In this article we summarise the contributions of Computer Centre to modify the IBM 704 into a time- John McCarthy to Computer Science. Among his sharing machine [1]. He later persuaded Digital Equip- contributions are: suggesting that the best method ment Corporation (who made the first mini computers of using computers is in an interactive mode, a mode and the PDP series of computers) to design a mini in which computers become partners of users computer with a time-sharing operating system. enabling them to solve problems. This logically led to the idea of time-sharing of large computers by many users and computing becoming a utility — much like a power utility.
    [Show full text]
  • Mathematical Circus & 'Martin Gardner
    MARTIN GARDNE MATHEMATICAL ;MATH EMATICAL ASSOCIATION J OF AMERICA MATHEMATICAL CIRCUS & 'MARTIN GARDNER THE MATHEMATICAL ASSOCIATION OF AMERICA Washington, DC 1992 MATHEMATICAL More Puzzles, Games, Paradoxes, and Other Mathematical Entertainments from Scientific American with a Preface by Donald Knuth, A Postscript, from the Author, and a new Bibliography by Mr. Gardner, Thoughts from Readers, and 105 Drawings and Published in the United States of America by The Mathematical Association of America Copyright O 1968,1969,1970,1971,1979,1981,1992by Martin Gardner. All riglhts reserved under International and Pan-American Copyright Conventions. An MAA Spectrum book This book was updated and revised from the 1981 edition published by Vantage Books, New York. Most of this book originally appeared in slightly different form in Scientific American. Library of Congress Catalog Card Number 92-060996 ISBN 0-88385-506-2 Manufactured in the United States of America For Donald E. Knuth, extraordinary mathematician, computer scientist, writer, musician, humorist, recreational math buff, and much more SPECTRUM SERIES Published by THE MATHEMATICAL ASSOCIATION OF AMERICA Committee on Publications ANDREW STERRETT, JR.,Chairman Spectrum Editorial Board ROGER HORN, Chairman SABRA ANDERSON BART BRADEN UNDERWOOD DUDLEY HUGH M. EDGAR JEANNE LADUKE LESTER H. LANGE MARY PARKER MPP.a (@ SPECTRUM Also by Martin Gardner from The Mathematical Association of America 1529 Eighteenth Street, N.W. Washington, D. C. 20036 (202) 387- 5200 Riddles of the Sphinx and Other Mathematical Puzzle Tales Mathematical Carnival Mathematical Magic Show Contents Preface xi .. Introduction Xlll 1. Optical Illusions 3 Answers on page 14 2. Matches 16 Answers on page 27 3.
    [Show full text]
  • Fpgas As Components in Heterogeneous HPC Systems: Raising the Abstraction Level of Heterogeneous Programming
    FPGAs as Components in Heterogeneous HPC Systems: Raising the Abstraction Level of Heterogeneous Programming Wim Vanderbauwhede School of Computing Science University of Glasgow A trip down memory lane 80 Years ago: The Theory Turing, Alan Mathison. "On computable numbers, with an application to the Entscheidungsproblem." J. of Math 58, no. 345-363 (1936): 5. 1936: Universal machine (Alan Turing) 1936: Lambda calculus (Alonzo Church) 1936: Stored-program concept (Konrad Zuse) 1937: Church-Turing thesis 1945: The Von Neumann architecture Church, Alonzo. "A set of postulates for the foundation of logic." Annals of mathematics (1932): 346-366. 60-40 Years ago: The Foundations The first working integrated circuit, 1958. © Texas Instruments. 1957: Fortran, John Backus, IBM 1958: First IC, Jack Kilby, Texas Instruments 1965: Moore’s law 1971: First microprocessor, Texas Instruments 1972: C, Dennis Ritchie, Bell Labs 1977: Fortran-77 1977: von Neumann bottleneck, John Backus 30 Years ago: HDLs and FPGAs Algotronix CAL1024 FPGA, 1989. © Algotronix 1984: Verilog 1984: First reprogrammable logic device, Altera 1985: First FPGA,Xilinx 1987: VHDL Standard IEEE 1076-1987 1989: Algotronix CAL1024, the first FPGA to offer random access to its control memory 20 Years ago: High-level Synthesis Page, Ian. "Closing the gap between hardware and software: hardware-software cosynthesis at Oxford." (1996): 2-2. 1996: Handel-C, Oxford University 2001: Mitrion-C, Mitrionics 2003: Bluespec, MIT 2003: MaxJ, Maxeler Technologies 2003: Impulse-C, Impulse Accelerated
    [Show full text]
  • ILE C/C++ Programmer's Guide
    IBM i 7.2 Programming IBM Rational Development Studio for i ILE C/C++ Programmer's Guide IBM SC09-2712-07 Note Before using this information and the product it supports, read the information in “Notices” on page 441. This edition applies to version 7, release 2, modification 0 of IBM Rational Development Studio for i (product number 5770-WDS) and to all subsequent releases and modifications until otherwise indicated in new editions. This version does not run on all reduced instruction set computer (RISC) models nor does it run on CISC models. This document may contain references to Licensed Internal Code. Licensed Internal Code is Machine Code and is licensed to you under the terms of the IBM License Agreement for Machine Code. © Copyright International Business Machines Corporation 1993, 2013. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents ILE C/C++ Programmer’s Guide..............................................................................1 PDF file for ILE C/C++ Programmer’s Guide............................................................................................... 3 About ILE C/C++ Programmer's Guide........................................................................................................5 Install Licensed Program Information................................................................................................... 5 Notes About Examples..........................................................................................................................
    [Show full text]
  • Developing Embedded SQL Applications
    IBM DB2 10.1 for Linux, UNIX, and Windows Developing Embedded SQL Applications SC27-3874-00 IBM DB2 10.1 for Linux, UNIX, and Windows Developing Embedded SQL Applications SC27-3874-00 Note Before using this information and the product it supports, read the general information under Appendix B, “Notices,” on page 209. Edition Notice This document contains proprietary information of IBM. It is provided under a license agreement and is protected by copyright law. The information contained in this publication does not include any product warranties, and any statements provided in this manual should not be interpreted as such. You can order IBM publications online or through your local IBM representative. v To order publications online, go to the IBM Publications Center at http://www.ibm.com/shop/publications/ order v To find your local IBM representative, go to the IBM Directory of Worldwide Contacts at http://www.ibm.com/ planetwide/ To order DB2 publications from DB2 Marketing and Sales in the United States or Canada, call 1-800-IBM-4YOU (426-4968). When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you. © Copyright IBM Corporation 1993, 2012. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Chapter 1. Introduction to embedded Include files for COBOL embedded SQL SQL................1 applications .............29 Embedding SQL statements
    [Show full text]
  • The UCSD P-System STATUT ORIL Y EX E:M PT
    DOCfi!D(ov~ by NSA on 12-01-2011, Transparency Case# 5335]UNCLASSIFIED The UCSD p-System STATUT ORIL Y EX E:M PT This paper discusses the UCSD p-System, an operating system for small computers developed at the University of California at San Diego. The discussion includes the overall system, file managing, editing, and programming in Pascal on the system. INTRODUCTION The UCSD p-System was developed at the University of California at San Diego to support Pascal programming on microcomputers. Similar to MS-DOS, the p-System is an operating system for small computers but is, in many ways, very different. The p-System is written in Pascal and now supports not only Pascal, but also FORTRAN, COBOL, BASIC, and Modula-2. The concept was to have an operating system that, once it was implemented on a machine, allowed any program written under that operating system to be truly transportable from computer to computer. That is to say, the p-System compiler would not actually translate the program into a language that was specific for, say, an 8088 chip on the IBM-PC, but rather would translate it into a "pseudo" language that, when used with an operating system designed for the PC, would run correctly. Similarly, if the operating system were implemented on a Digital Equipment Corporation (DEC) computer, this same pseudo code would still work properly with no modifications. The particular version of UCSD p-System tested was written for the IBM-PC and requires two single-sided double-density disk drives and at least 128K of memory.
    [Show full text]