An optimizing assembler is one which optimizes an assembly language program at assembly time. It is designed for the final phase of the PASCAL compiler whose output is the IBM VM/CMS assembly language program. It is implemented in PASCAL on IBM 370/145 under VM/CMS. Its input is the output of the compiler, and its output is an object module, text in terms of VM/CMS, which is compatible with a VM/CMS loader.
The optimizing assembly process consists of three phases: parsing, optimization, and assembly. The parsing phase reads a source program and constructs an Abstract Syntax Tree (AST). The optimization phase carries out AST-to-AST transformation. The assembly phase traverses AST and outputs text.
We present a table-driven peephole optimizer which executes pattern table that is regarded as instruction, and design a pattern language for pattern description.
optimizing assembler는 assembly time에 assembly language program을 optmization하는 assembler이다. 이 optimizing assembler를 출력이 IBM VM/CMS의 assembly language program인 PASCAL compiler의 마지막 단계로 설계하였으며, PASCAL로 VM/CMS하의 IBM 370/145에 설치하였다. 입력은 PASCAL compiler의 출력이며, 출력은 object module (VM/CMS 용어로는 text) 이다. 이 text는 VM/CMS loader에 그대로 사용할 수 있다.
optimizing assembly 과정은 parsing, optimization과 assembly 단계로 구성된다. parsing 단계에서는 source program을 읽어서 Abstract Syntax Tree (AST)를 만들고, optimization 단계에서는 AST-to-AST 변환을 하며, assembly단계에서는 AST를 traverse하면서 text를 출력한다.
이 논문에서는 pattern table을 instruction처럼 여겨서 수행하는 table-driven peephole optimizer를 제시하고, pattern description을 위해 pattern language를 설계하였다.