首页 > 最新文献

SIGPLAN Conferences and Workshops最新文献

英文 中文
Efficient interpretation of Prolog programs Prolog程序的有效解释
Pub Date : 1987-07-01 DOI: 10.1145/29650.29664
Jonas Barklund
The paper focuses on three ideas for solving problems with writing interpreters for the logic programming language Prolog in Prolog and how to combine these ideas to an interpreter for Prolog which is both simple and efficient. The resulting interpreter system can be incorporated into a Prolog based on Warren's Abstract Machine and built mostly from existing parts of it. The interpreter has been implemented and is used in a Prolog system developed at Uppsala University.
本文着重讨论了在Prolog中编写逻辑程序设计语言Prolog解释器时解决问题的三种思路,以及如何将这些思路结合到一个既简单又高效的Prolog解释器中。由此产生的解释器系统可以合并到基于Warren抽象机器的Prolog中,并主要从它的现有部分构建。该解释器已在乌普萨拉大学开发的Prolog系统中实现并使用。
{"title":"Efficient interpretation of Prolog programs","authors":"Jonas Barklund","doi":"10.1145/29650.29664","DOIUrl":"https://doi.org/10.1145/29650.29664","url":null,"abstract":"The paper focuses on three ideas for solving problems with writing interpreters for the logic programming language Prolog in Prolog and how to combine these ideas to an interpreter for Prolog which is both simple and efficient. The resulting interpreter system can be incorporated into a Prolog based on Warren's Abstract Machine and built mostly from existing parts of it. The interpreter has been implemented and is used in a Prolog system developed at Uppsala University.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"65 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121696053","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Constructive real interpretation of numerical programs 数值程序的建设性实解
Pub Date : 1987-07-01 DOI: 10.1145/29650.29673
H. Boehm
We explore the feasibility of providing exact real arithmetic for use in conventional numerical programs. We have built a prototype interpreter which replaces floating point operations with operations on constructive real numbers in the execution of conventional Fortran programs. Such a facility makes it unnecessary to concern oneself with issues of numerical stability in the solution of small problems. It also provides a useful tool for the development of larger numerical programs.We discuss the computability and algorithmic issues involved in the design of the interpreter, as well as some preliminary experiences and performance measurements.
我们探讨了在常规数值程序中提供精确实算法的可行性。我们建立了一个原型解释器,它在执行传统Fortran程序时用构造实数运算取代浮点运算。这样的便利使得在解决小问题时不必考虑数值稳定性的问题。它也为开发更大的数值程序提供了一个有用的工具。我们讨论了解释器设计中涉及的可计算性和算法问题,以及一些初步的经验和性能测量。
{"title":"Constructive real interpretation of numerical programs","authors":"H. Boehm","doi":"10.1145/29650.29673","DOIUrl":"https://doi.org/10.1145/29650.29673","url":null,"abstract":"We explore the feasibility of providing exact real arithmetic for use in conventional numerical programs. We have built a prototype interpreter which replaces floating point operations with operations on constructive real numbers in the execution of conventional Fortran programs. Such a facility makes it unnecessary to concern oneself with issues of numerical stability in the solution of small problems. It also provides a useful tool for the development of larger numerical programs.We discuss the computability and algorithmic issues involved in the design of the interpreter, as well as some preliminary experiences and performance measurements.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"116 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117199946","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 31
A recursive interpreter for the Icon programming language Icon编程语言的递归解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29665
Janalee O'Bagy, R. Griswold
The implementation of the Icon programming language is more interesting and difficult than the implementation of many other programming languages because an expression in Icon can generate a sequence of results. The implementation therefore must support control backtracking in expression evaluation. There also are several novel control structures related to generators. Because expression evaluation is limited lexically, a full coroutine mechanism is not needed and expression evaluation can be handled in a stack-like fashion.The implementation of Icon consists of a virtual machine with a stack-based architecture and an interpreter that executes the virtual machine instructions. There have been several different interpreters for Icon's virtual machine. This paper describes a new approach in which the interpreter is called recursively whenever the context for expression evaluation changes. This recursive interpreter has the advantage of being conceptually clear and flexible without sacrificing efficiency.
Icon编程语言的实现比许多其他编程语言的实现更有趣,也更困难,因为Icon中的表达式可以生成一系列结果。因此,实现必须支持表达式求值中的控制回溯。还有一些新的与发电机相关的控制结构。因为表达式求值在词法上是有限的,所以不需要一个完整的协程机制,表达式求值可以以类似堆栈的方式处理。Icon的实现由一个基于堆栈架构的虚拟机和一个执行虚拟机指令的解释器组成。Icon的虚拟机有几个不同的解释器。本文描述了一种新的方法,当表达式求值的上下文发生变化时,递归地调用解释器。这种递归解释器的优点是在不牺牲效率的情况下概念清晰和灵活。
{"title":"A recursive interpreter for the Icon programming language","authors":"Janalee O'Bagy, R. Griswold","doi":"10.1145/29650.29665","DOIUrl":"https://doi.org/10.1145/29650.29665","url":null,"abstract":"The implementation of the Icon programming language is more interesting and difficult than the implementation of many other programming languages because an expression in Icon can generate a sequence of results. The implementation therefore must support control backtracking in expression evaluation. There also are several novel control structures related to generators. Because expression evaluation is limited lexically, a full coroutine mechanism is not needed and expression evaluation can be handled in a stack-like fashion.The implementation of Icon consists of a virtual machine with a stack-based architecture and an interpreter that executes the virtual machine instructions. There have been several different interpreters for Icon's virtual machine. This paper describes a new approach in which the interpreter is called recursively whenever the context for expression evaluation changes. This recursive interpreter has the advantage of being conceptually clear and flexible without sacrificing efficiency.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"171 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123472727","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 15
Parallelism, persistence and meta-cleanliness in the symmetric Lisp interpreter 对称Lisp解释器中的并行性、持久性和元清洁性
Pub Date : 1987-07-01 DOI: 10.1145/29650.29679
D. Gelernter, S. Jagannathan, T. London
Symmetric Lisp is a programming language designed around first-class environments, where an environment is a dictionary that associates names with definitions or values. In this paper we describe the logical structure of the Symmetric Lisp interpreter. In other interpreted languages, the interpreter is a virtual machine that evaluates user input on the basis of its own internal state. The Symmetric Lisp interpreter, on the other hand, is a simple finite-state machine with no internal state. Its role is to attach user input to whatever environment the user has specified; such environments are transparent objects created by, maintained by and fully accessible to the user. The interpreter's semantics are secondary to the semantics of environments in Symmetric Lisp: it is the environment-object to which an expression is attached, not the interpreter, that controls the evaluation of expressions.This arrangement has several consequences. Because environments in Symmetric Lisp are governed by a parallel evaluation rule, the Symmetric Lisp interpreter is a parallel interpreter. A Symmetric Lisp environment evaluates to another environment; a session with the interpreter therefore yields a well-defined environment object as its result. Users are free to write routines that manage these interpreter-created objects - routines that list the elements of a namespace, coalesce environments, maintain multiple name definitions and so on precisely because environment objects may be freely inspected and manipulated. Because a named environment may contain other named environments as elements, interpreter-created objects may be regarded as hierarchical file systems. Because of the parallel evaluation semantics of environments, the interpreter is well-suited as an interface to a concurrent, language-based computer system that uses Symmetric Lisp as its base language. We argue that - in short - a basic semantic simplification in Symmetric Lisp promises a correspondingly basic increase in power at the user-interpreter interface.
对称Lisp是一种围绕一等环境设计的编程语言,其中环境是将名称与定义或值关联起来的字典。本文描述了对称Lisp解释器的逻辑结构。在其他解释性语言中,解释器是一个虚拟机,它根据自己的内部状态评估用户输入。另一方面,对称Lisp解释器是一个简单的有限状态机,没有内部状态。它的作用是将用户输入附加到用户指定的任何环境;这样的环境是由用户创建、维护和完全可访问的透明对象。在对称Lisp中,解释器的语义相对于环境的语义来说是次要的:控制表达式求值的是表达式所附加的环境对象,而不是解释器。这种安排有几个后果。因为对称Lisp中的环境是由并行求值规则控制的,所以对称Lisp解释器是一个并行解释器。对称Lisp环境对另一个环境求值;因此,与解释器的会话将产生一个定义良好的环境对象作为结果。用户可以自由地编写管理这些解释器创建的对象的例程——这些例程精确地列出名称空间的元素、合并环境、维护多个名称定义等等,因为环境对象可以自由地检查和操作。因为命名环境可能包含其他命名环境作为元素,解释器创建的对象可以被视为分层文件系统。由于环境的并行计算语义,解释器非常适合作为使用Symmetric Lisp作为其基本语言的并发的、基于语言的计算机系统的接口。简而言之,我们认为对称Lisp中基本的语义简化保证了用户-解释器界面功能的相应基本增强。
{"title":"Parallelism, persistence and meta-cleanliness in the symmetric Lisp interpreter","authors":"D. Gelernter, S. Jagannathan, T. London","doi":"10.1145/29650.29679","DOIUrl":"https://doi.org/10.1145/29650.29679","url":null,"abstract":"Symmetric Lisp is a programming language designed around first-class environments, where an environment is a dictionary that associates names with definitions or values. In this paper we describe the logical structure of the Symmetric Lisp interpreter. In other interpreted languages, the interpreter is a virtual machine that evaluates user input on the basis of its own internal state. The Symmetric Lisp interpreter, on the other hand, is a simple finite-state machine with no internal state. Its role is to attach user input to whatever environment the user has specified; such environments are transparent objects created by, maintained by and fully accessible to the user. The interpreter's semantics are secondary to the semantics of environments in Symmetric Lisp: it is the environment-object to which an expression is attached, not the interpreter, that controls the evaluation of expressions.This arrangement has several consequences. Because environments in Symmetric Lisp are governed by a parallel evaluation rule, the Symmetric Lisp interpreter is a parallel interpreter. A Symmetric Lisp environment evaluates to another environment; a session with the interpreter therefore yields a well-defined environment object as its result. Users are free to write routines that manage these interpreter-created objects - routines that list the elements of a namespace, coalesce environments, maintain multiple name definitions and so on precisely because environment objects may be freely inspected and manipulated. Because a named environment may contain other named environments as elements, interpreter-created objects may be regarded as hierarchical file systems. Because of the parallel evaluation semantics of environments, the interpreter is well-suited as an interface to a concurrent, language-based computer system that uses Symmetric Lisp as its base language. We argue that - in short - a basic semantic simplification in Symmetric Lisp promises a correspondingly basic increase in power at the user-interpreter interface.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131839144","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
The type inference and coercion facilities in the scratchpad II interpreter scratchpad II解释器中的类型推断和强制转换功能
Pub Date : 1987-07-01 DOI: 10.1145/29650.29656
R. Sutor, R. Jenks
The Scratchpad II system is an abstract datatype programming language, a compiler for the language, a library of packages of polymorphic functions and parametrized abstract datatypes, and an interpreter that provides sophisticated type inference and coercion facilities. Although originally designed for the implementation of symbolic mathematical algorithms, Scratchpad II is a general purpose programming language. This paper discusses aspects of the implementation of the interpreter and how it attempts to provide a user friendly and relatively weakly typed front end for the strongly typed programming language.
Scratchpad II系统是一种抽象数据类型编程语言,该语言的编译器,多态函数和参数化抽象数据类型包的库,以及提供复杂类型推断和强制功能的解释器。虽然最初是为实现符号数学算法而设计的,但Scratchpad II是一种通用的编程语言。本文讨论了解释器实现的各个方面,以及它如何尝试为强类型编程语言提供一个用户友好且相对弱类型的前端。
{"title":"The type inference and coercion facilities in the scratchpad II interpreter","authors":"R. Sutor, R. Jenks","doi":"10.1145/29650.29656","DOIUrl":"https://doi.org/10.1145/29650.29656","url":null,"abstract":"The Scratchpad II system is an abstract datatype programming language, a compiler for the language, a library of packages of polymorphic functions and parametrized abstract datatypes, and an interpreter that provides sophisticated type inference and coercion facilities. Although originally designed for the implementation of symbolic mathematical algorithms, Scratchpad II is a general purpose programming language. This paper discusses aspects of the implementation of the interpreter and how it attempts to provide a user friendly and relatively weakly typed front end for the strongly typed programming language.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123510945","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 28
A Fortran 77 interpreter for mutation analysis 用于突变分析的Fortran 77解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29669
A. Offutt, K. N. King
Mutation analysis is a powerful technique for testing software systems. In the Mothra project, conducted at Georgia Tech's Software Engineering Research Center, mutation analysis is used as a basis for building an integrated software testing environment. Mutation analysis requires the execution of many slightly differing versions of the same program to evaluate the quality of the data used to test the program. In the current version of the Mothra system, a program to be tested is translated to intermediate code, where it and its mutated versions are executed by an interpreter.In this paper, we discuss some of the unique requirements of an interpreter used in a mutation-based testing environment. We then describe how these requirements affected the design and implementation of the Fortran 77 version of the Mothra interpreter. Other topics covered include the architecture of the interpreter and many of the design elements that it incorporates. We also describe the intermediate language used by Mothra and the features of the interpreter that are needed for software testing.
突变分析是测试软件系统的一种强有力的技术。在乔治亚理工软件工程研究中心进行的Mothra项目中,突变分析被用作构建集成软件测试环境的基础。突变分析需要执行同一程序的许多略有不同的版本,以评估用于测试程序的数据的质量。在当前版本的Mothra系统中,要测试的程序被翻译成中间代码,在中间代码中,它和它的变异版本由解释器执行。在本文中,我们讨论了在基于突变的测试环境中使用的解释器的一些独特需求。然后,我们描述这些需求如何影响Fortran 77版本的Mothra解释器的设计和实现。所涉及的其他主题包括解释器的体系结构和它所包含的许多设计元素。我们还描述了Mothra使用的中间语言以及软件测试所需的解释器的特性。
{"title":"A Fortran 77 interpreter for mutation analysis","authors":"A. Offutt, K. N. King","doi":"10.1145/29650.29669","DOIUrl":"https://doi.org/10.1145/29650.29669","url":null,"abstract":"Mutation analysis is a powerful technique for testing software systems. In the Mothra project, conducted at Georgia Tech's Software Engineering Research Center, mutation analysis is used as a basis for building an integrated software testing environment. Mutation analysis requires the execution of many slightly differing versions of the same program to evaluate the quality of the data used to test the program. In the current version of the Mothra system, a program to be tested is translated to intermediate code, where it and its mutated versions are executed by an interpreter.In this paper, we discuss some of the unique requirements of an interpreter used in a mutation-based testing environment. We then describe how these requirements affected the design and implementation of the Fortran 77 version of the Mothra interpreter. Other topics covered include the architecture of the interpreter and many of the design elements that it incorporates. We also describe the intermediate language used by Mothra and the features of the interpreter that are needed for software testing.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"217 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115222094","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 44
Cint: a RISC interpreter for the C programming language C语言的RISC解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29670
J. Davidson, J. Gresh
Cint is an interpretation system for the C programming language. Like most interpretation systems, it provides "load and go" type execution as well as enhanced debugging and performance analysis tools. Cint consists of two phases--a translator and an interpreter. The translator compiles the source program into code for a virtual machine. The interpreter then loads and executes this code. While providing services similar to traditional interpreters, Cint differs from them in two important ways. First, the virtual machine languages used by many interpreters are quite large; machines with 100 to 200 operations are common. In contrast, Cint's virtual machine has only 63 operations. Second, to achieve acceptable execution speeds, interpreters are often implemented in the assembly language of the host machine. Cint, however, is written entirely in C and is therefore portable. In fact, it has been transported to four machines without modification. Despite the compact size of the virtual machine language and the high-level language implementation, Cint's execution speed is comparable to that of other interpreters. This paper describes the design of the virtual machine, the implementation of the interpreter, and the performance of the system.
Cint是C编程语言的一种解释系统。像大多数解释系统一样,它提供“加载并运行”类型的执行以及增强的调试和性能分析工具。翻译由两个阶段组成——翻译者和口译员。转换器将源程序编译成虚拟机的代码。然后解释器加载并执行这段代码。虽然提供与传统口译员类似的服务,但Cint在两个重要方面与传统口译员不同。首先,许多解释器使用的虚拟机语言相当庞大;操作100到200次的机器很常见。相比之下,Cint的虚拟机只有63个操作。其次,为了达到可接受的执行速度,解释器通常用主机的汇编语言实现。然而,Cint完全是用C编写的,因此是可移植的。事实上,它已经运输到四个机器没有修改。尽管虚拟机语言和高级语言实现非常紧凑,但Cint的执行速度与其他解释器相当。本文介绍了虚拟机的设计、解释器的实现以及系统的性能。
{"title":"Cint: a RISC interpreter for the C programming language","authors":"J. Davidson, J. Gresh","doi":"10.1145/29650.29670","DOIUrl":"https://doi.org/10.1145/29650.29670","url":null,"abstract":"Cint is an interpretation system for the C programming language. Like most interpretation systems, it provides \"load and go\" type execution as well as enhanced debugging and performance analysis tools. Cint consists of two phases--a translator and an interpreter. The translator compiles the source program into code for a virtual machine. The interpreter then loads and executes this code. While providing services similar to traditional interpreters, Cint differs from them in two important ways. First, the virtual machine languages used by many interpreters are quite large; machines with 100 to 200 operations are common. In contrast, Cint's virtual machine has only 63 operations. Second, to achieve acceptable execution speeds, interpreters are often implemented in the assembly language of the host machine. Cint, however, is written entirely in C and is therefore portable. In fact, it has been transported to four machines without modification. Despite the compact size of the virtual machine language and the high-level language implementation, Cint's execution speed is comparable to that of other interpreters. This paper describes the design of the virtual machine, the implementation of the interpreter, and the performance of the system.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"99 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116106683","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Selective interpretation as a technique for debugging computationally intensive programs 选择性解释作为调试计算密集型程序的一种技术
Pub Date : 1987-07-01 DOI: 10.1145/29650.29662
B. B. Chase, R. Hood
As part of Rice University's project to build a programming environment for scientific software, we have built a facility for program execution that solves some of the problems inherent in debugging large, computationally intensive programs. By their very nature such programs do not lend themselves to full-scale interpretation. In moderation however, interpretation can be extremely useful during the debugging process. In addition to discussing the particular benefits that we expect from interpretation, this paper addresses how interpretive techniques can be effectively used in conjunction with the execution of compiled code. The same implementation technique that permits interpretation to be incorporated as part of execution will also permit the execution facility to be used for debugging parallel programs running on a remote machine.
作为莱斯大学为科学软件建立编程环境项目的一部分,我们建立了一个程序执行设施,解决了在调试大型计算密集型程序时固有的一些问题。就其本质而言,这些程序不适合进行全面的解释。但是,在适当的情况下,解释在调试过程中可能非常有用。除了讨论我们期望从解释中获得的特殊好处之外,本文还讨论了如何有效地将解释技术与编译代码的执行结合起来使用。允许将解释合并为执行的一部分的相同实现技术也允许将执行工具用于调试运行在远程机器上的并行程序。
{"title":"Selective interpretation as a technique for debugging computationally intensive programs","authors":"B. B. Chase, R. Hood","doi":"10.1145/29650.29662","DOIUrl":"https://doi.org/10.1145/29650.29662","url":null,"abstract":"As part of Rice University's project to build a programming environment for scientific software, we have built a facility for program execution that solves some of the problems inherent in debugging large, computationally intensive programs. By their very nature such programs do not lend themselves to full-scale interpretation. In moderation however, interpretation can be extremely useful during the debugging process. In addition to discussing the particular benefits that we expect from interpretation, this paper addresses how interpretive techniques can be effectively used in conjunction with the execution of compiled code. The same implementation technique that permits interpretation to be incorporated as part of execution will also permit the execution facility to be used for debugging parallel programs running on a remote machine.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125020226","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
Integrating code generation and optimization 集成代码生成和优化
Pub Date : 1986-07-01 DOI: 10.1145/12276.13335
C. Fraser, A. L. Wendt
This paper describes a compiler with a code generator and machine-directed peephole optimizer that are tightly integrated. Both functions are performed by a single rule-based rewriting system that matches and replaces patterns. This organization helps make the compiler simple, fast, and retargetable. It also corrects certain phase-ordering problems.
本文描述了一个编译器与代码生成器和机器导向的窥视孔优化器紧密集成。这两个功能都由一个基于规则的重写系统执行,该系统匹配和替换模式。这种组织有助于使编译器简单、快速和可重定向。它还纠正了某些相序问题。
{"title":"Integrating code generation and optimization","authors":"C. Fraser, A. L. Wendt","doi":"10.1145/12276.13335","DOIUrl":"https://doi.org/10.1145/12276.13335","url":null,"abstract":"This paper describes a compiler with a code generator and machine-directed peephole optimizer that are tightly integrated. Both functions are performed by a single rule-based rewriting system that matches and replaces patterns. This organization helps make the compiler simple, fast, and retargetable. It also corrects certain phase-ordering problems.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"106 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1986-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127326947","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 29
Implementing RUSSELL 实现罗素
Pub Date : 1986-07-01 DOI: 10.1145/12276.13330
Hans-Juergen Boehm, Alan J. Demers
We have completed an implementation of the Russell programming language [Don 85]. This effort has been very helpful in the evaluation of the original language design. It has also served to pinpoint the difficulties in implementing languages with type systems as general as that of Russell.Russell treats both functions and types as data objects which can be freely manipulated by the program. Most operators present in conventional programming languages are viewed as function calls. In spite of this, our compiler produces surprisingly efficient machine code, even with minimal effort invested in the code generator.The generality of the language served to simplify some aspects of the compiler. We focus on the separate compilation mechanism.The most difficult implementation problem is that of inferring typing information omitted by the programmer. We argue that this is an essential part of type checking a language such as Russell. Our current solution is only partially satisfactory.
我们已经完成了Russell编程语言的实现[Don 85]。这项工作对评估原始语言设计非常有帮助。它还指出了在使用像Russell那样通用的类型系统实现语言时的困难。Russell将函数和类型都视为可以由程序自由操作的数据对象。传统编程语言中的大多数操作符都被视为函数调用。尽管如此,我们的编译器产生了令人惊讶的高效机器码,即使在代码生成器上投入的精力很少。这种语言的通用性有助于简化编译器的某些方面。我们关注的是单独的编译机制。最困难的实现问题是推断程序员省略的类型信息。我们认为这是像Russell这样的语言类型检查的重要部分。我们目前的解决办法只是部分令人满意。
{"title":"Implementing RUSSELL","authors":"Hans-Juergen Boehm, Alan J. Demers","doi":"10.1145/12276.13330","DOIUrl":"https://doi.org/10.1145/12276.13330","url":null,"abstract":"We have completed an implementation of the Russell programming language [Don 85]. This effort has been very helpful in the evaluation of the original language design. It has also served to pinpoint the difficulties in implementing languages with type systems as general as that of Russell.\u0000Russell treats both functions and types as data objects which can be freely manipulated by the program. Most operators present in conventional programming languages are viewed as function calls. In spite of this, our compiler produces surprisingly efficient machine code, even with minimal effort invested in the code generator.\u0000The generality of the language served to simplify some aspects of the compiler. We focus on the separate compilation mechanism.\u0000The most difficult implementation problem is that of inferring typing information omitted by the programmer. We argue that this is an essential part of type checking a language such as Russell. Our current solution is only partially satisfactory.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1986-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134149244","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 19
期刊
SIGPLAN Conferences and Workshops
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1