Topic: intermediate representation of code

topics > computer science > programming > Group: code generation

code optimization
code optimization by code rewrite
compressed code
incremental execution
just-in-time compilation
load-time code generation
machine code and assembly language
object code linkers and loaders
register allocation
stack machine
threaded code
virtual machine
Subtopic: intermediate code goals up

Quote: intermediate representation should be machine independent, encode dataflow, allow security proofs, extendible, space efficient, online code generation [»franM11_1998]
Quote: for optimization, the intermediate representation should be tree-based with control flow, dominator, and use-def information included [»franM11_1998]

Subtopic: intermediate language as abstraction up

Quote: C-- is an abstraction of computation (expressions), control flow (if), memory (addressing), registers (variables), and procedures; an intermediate language [»joneSP9_1999]

Subtopic: specification up

Quote: ASDL, abstract syntax description language, for describing intermediate representations; concise data structure definitions, pickling functions, and automated implementation; simplification of ASN.1 [»wangDS10_1997]

Subtopic: examples up

Quote: Lean Virtual Machine--stack-based; lcc trees in postfix
Quote: C-- is a compiler-target language that is independent of source programming and target architecture [»ramsN6_2000]
Quote: C-- is a portable assembly language; e.g., language-independent specification of garbage collection
Quote: .NET Common Language Runtime (CLR) provides a type system and intermediate language for object-oriented languages; stack-based, single-inheritance, interfaces, native code compilation, runtime services, shared libraries [»kennA6_2001]
Quote: Limbo programs are byte codes for the Dis virtual machine with garbage collection and task scheduling [»dorwSM1_1997]
Quote: 32-bit, register-based intermediate language for PL.8; similar to target machines [»auslM6_1982]
QuoteRef: ahoAV_1973 ;;724 intermediate representations--pre or postfix polish, linked list trees, multiple address code with named or implicit results
QuoteRef: ganaM10_1981 ;;Bibliography on automated retargetable code generation

Subtopic: uniform intermediate code up

Quote: in multi-pass programs with different intermediate formats, can not remove a pass [»parnDL5_1978]

Subtopic: IL code generation up

Quote: generate intermediate code bottom up, independent of context [»auslM6_1982]

Subtopic: control flow up

Quote: PL.8 intermediate language uses a status register for compares and conditional jumps; no source language control structures [»auslM6_1982]
Quote: a C-- program is the textual description of a control-flow graph; a label names a node and a goto creates an edge to the node [»ramsN6_2000]
Quote: with structured languages, loops in intermediate code usually via 'DO' construct

Subtopic: data types up

Quote: C-- types are words and floating-point values of various sizes; e.g., bits16, float64 [»ramsN6_2000]
Quote: C-- types only for the allocation and use of machine resources; e.g., the mapping of variables to registers [»ramsN6_2000]

Subtopic: addressing up

Quote: C-- identifies the native data-pointer and native code-pointer types
Quote: optimize addressing and housekeeping computations through the intermediate language; necessary for efficiency [»auslM6_1982]

Subtopic: compression up

Quote: 24% smaller compressed code by separating an intermediate representation into streams [»frasCW5_1999]

Subtopic: lexical tokens up

Quote: store program as tokens; skips lexical scan, reduces file size, allows full listing [»hoarCA_1974]

Subtopic: patching up

Quote: JRun instruments Java code by patching its bytecode; annotated class file format with constant pool [»mossK10_2000]
Quote: Corbato and Daggett's linking loader allowed patches in symbolic machine language [»mccaJ7_1963]

Subtopic: load-time linking up

Quote: Oberon's loader transforms modules into executable code by linking object code files on disk [»wirtN9_1989]
Quote: a linking segment subprogram is a relocatable binary with symbolic references and arrays; a linking loader combines these subprograms and resolves references [»mccaJ7_1963]

Subtopic: run-time code generation up

Quote: instruction coprocessor generates machine code for intermediate codes; 2x faster, problem of jumps [»debaEH_1990]

Subtopic: intermediate code vs. source up

Quote: compared intermediate code instead of C code; captures the essential properties of a program [»engbJ5_1999]
Note: use compiled code as disk format; IDs expanded to text as needed [»cbb_1990, OK]

Subtopic: decoding up

Quote: algorithm for decoding machine code from bit patterns alone; accesses significant bits exactly once; assumes unambiguous decoding by the processor

Related Topics up

Topic: code optimization (54 items)
Topic: code optimization by code rewrite (30 items)
Topic: compiler (18 items)
Topic: compressed code (17 items)
Topic: incremental execution (22 items)
Topic: interpreter (59 items)
Topic: just-in-time compilation (20 items)
Topic: load-time code generation (13 items)
Topic: machine code and assembly language (49 items)
Topic: object code linkers and loaders (31 items)
Topic: register allocation (28 items)
Topic: stack machine (10 items)
Topic: threaded code (18 items)
Topic: virtual machine
(13 items)

Updated barberCB 6/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.