Topic: code optimization
Topic: code optimization by advice and statistics
Topic: code optimization by code rewrite
Topic: code optimization by flow analysis
Topic: code optimization by global analysis
Topic: code optimization by instruction reordering or scheduling
Topic: code optimization by special case analysis
Topic: compile-time execution
Topic: compiler
Topic: compiling pseudocode designs
Topic: compressed code
Topic: conditional compilation
Topic: executable code from specifications and designs
Topic: in-line code
Topic: in-line machine code
Topic: incremental compilation
Topic: intermediate representation of code
Topic: interpreter
Topic: just-in-time compilation
Topic: load-time code generation
Topic: object code linkers and loaders
Topic: optimization of object-oriented programs
Topic: register allocation
Topic: register allocation by graph coloring
Topic: register allocation by usage counts
Topic: register allocation by use-def graphs
Topic: register arguments to subroutines
Topic: static single assignment; SSA
Topic: symbol table
Topic: threaded code
Topic: execution profile
Topic: machine code and assembly language
Topic: reverse engineering of software
Topic: syntax analysis
Topic: system builds
Topic: Thesa compiler and loader
| |
Summary
Code generation usually takes intermediate code based on symbolic operands or a syntax tree and produces relocatable code for linking and loading. It is an input-driven process-- ultimately from the original program representation. The result is a linear sequence of machine operations, and a list of symbols to interconnect separately compiled modules.
In Thesa, code generation assembles code from component procedures. It processes a sequence of virtual machine instructions in a register allocating environment. Register allocation decisions are delayed while information is collected. (cbb 5/80)
Subtopic: front end, back end, run-time
Quote: co-design the front end, back end, and run-time system of a programming language; garbage collection, exception handling, debugging, profiling, and concurrency [»joneSP9_1999]
| Quote: C-- separates policy from mechanism; enough hooks to allow a front-end system to implement a high-level run-time service; e.g., garbage collection [»joneSP9_1999]
| Quote: high-level run-time services need to inspect and modify the state of a suspended program; e.g., garbage collector and live pointers, exception handler and call stack [»joneSP9_1999]
| Quote: high-level run-time services combine information that only the front end has (variables on the heap, which exception handlers in scope), with information that only the back end has (live variables, program-counter values, how to unwind stacks)
| Subtopic: code generation by routines
Quote: Algol N's code generator traverses a tree and evokes a small code generator for each node [»suzaN12_1971]
| QuoteRef: elsoM3_1970 ;;419 code generation by OMD which process tree from current location then chain or call other OMD. each node type also an OMD
| Quote: compiler classifies a statement by pattern and calls appropriate routine [»nappRB2_1976, OK]
| QuoteRef: cbb_1973 ;;2/3/74 it isn't the compiler that produces code but the program itself, just as it isn't the pen and pencil that produce the program
| QuoteRef: cbb_1973 ;;6/18/78 so process of assembling and loading is very similar
| Subtopic: byte-and-pointers model needed for efficiency
Quote: code generation is inefficient for languages whose semantics are not close to the bytes-and-pointers model; often 3 to 10 times slower, especially with dynamic typing [»koenA12_1995]
| Subtopic: compiler toolkit
Quote: toolkit for processing machine codes: fields and tokens to describe instructions, patterns of binary encodings, and constructors to map assembly code to binary [»ramsN1_1995]
| QuoteRef: bennRK7_1976 ;;37 many operators of all flavors-- eg for producing code
| Subtopic: metadata
Quote: PL.8 generated type metadata for every external variable; used for link edit and load-time type checking [»auslM6_1982]
| Subtopic: generating machine code
Quote: generate machine code after register allocation; table-driven, destructive operations, addressability, external references [»auslM6_1982]
| Subtopic: decoding machine code
Quote: algorithm for decoding machine code from bit patterns alone; accesses significant bits exactly once; assumes unambiguous decoding by the processor [»theiH6_2001]
|
Group: code generation
Topic: code optimization (54 items)
Topic: code optimization by advice and statistics (8 items)
Topic: code optimization by code rewrite (30 items)
Topic: code optimization by flow analysis (47 items)
Topic: code optimization by global analysis (24 items)
Topic: code optimization by instruction reordering or scheduling (16 items)
Topic: code optimization by special case analysis (22 items)
Topic: compile-time execution (17 items)
Topic: compiler (18 items)
Topic: compiling pseudocode designs (8 items)
Topic: compressed code (17 items)
Topic: conditional compilation (1 item)
Topic: executable code from specifications and designs (18 items)
Topic: in-line code (7 items)
Topic: in-line machine code (5 items)
Topic: incremental compilation (3 items)
Topic: intermediate representation of code (31 items)
Topic: interpreter (59 items)
Topic: just-in-time compilation (20 items)
Topic: load-time code generation (13 items)
Topic: object code linkers and loaders (31 items)
Topic: optimization of object-oriented programs (16 items)
Topic: register allocation (28 items)
Topic: register allocation by graph coloring (21 items)
Topic: register allocation by usage counts (12 items)
Topic: register allocation by use-def graphs (9 items)
Topic: register arguments to subroutines (2 items)
Topic: static single assignment; SSA (19 items)
Topic: symbol table (4 items)
Topic: threaded code (18 items)
Related Topics
Topic: execution profile (43 items)
Topic: machine code and assembly language (49 items)
Topic: reverse engineering of software (6 items)
Topic: syntax analysis (29 items)
Topic: system builds (43 items)
Topic: Thesa compiler and loader (23 items)
|