Group: code generation
Group: types of programming languages
Topic: code optimization
Topic: Goldstine and von Neumann consistency proof
Topic: in-line machine code
Topic: intermediate representation of code
Topic: code optimization by special case analysis
Topic: programming by sequential implementation
Topic: register allocation
Topic: reverse engineering of software
ThesaHelp: URLs for assembly language
| |
Summary
Machine code is a very compact, linear representation of a program. The machine instructions themselves involve many computer actions. Before the advent of assemblers and compilers, code was encoded by hand, demanding careful techniques. For instance, Goldstein and Von Neumann developed flow charts which combined program specification with a proof of consistency. Encoding from these charts was straight-forward, but the flow charts were difficult to write. (cbb 5/80)
Subtopic: code is compact
Quote: like Noah, an author should crowd a great deal of matter into a very small compass [»brooFP_1975]
| Quote: computer code is a very compact deposit of our intellectual labors [»dijkEW_1976]
| Quote: the true contraction of reference is machine code; a language should be an expansion of reference; unlike VHLLs [»cbb_1980, OK]
| Quote: computer code is a very compact deposit of our intellectual labors [»dijkEW_1976]
| Subtopic: dynamic linking
Quote: dynamic linking of verifiable native code in Typed Assembly Language (TAL); allows type-safe, dynamic linking; comparable performance to the standard ELF implementation [»hickM9_2000]
| Subtopic: assembly code best
Quote: assembly code is simple, uniform, and easily defined; immediate feedback on time and space efficiency; surprisingly effective [»hoarCA_1974]
| Quote: computer hardware can execute almost any sequence of instructions; the secret of its power, flexibility, simplicity, and reliability
| Quote: even though C and C++ are excellent languages for low-level systems work, assembly code can be significantly smaller and faster, and expensive to maintain [»stroB_1994]
| Quote: performance testing of cryptographic algorithms written in optimized assembly code [»prenB12_1998]
| Quote: MP-RCS critical sections written in assembler without destroying input arguments
| Subtopic: coding a design
Quote: before writing code, it is good to plan the process, its successive stages, and the corresponding relationships [»goldHH_1948]
| Quote: once a flow diagram is constructed, machine coding can be done independently for each operation box [»goldHH_1948, OK]
| Subtopic: machine code vs. symbolic
Quote: machine level programs were used to tailor a general-purpose computer to a specific problem; not for the symbolic expression of a problem [»abboRJ8_1987]
| Quote: some argue that attempts to make the machine assist with programming lead to wasteful dissipation of effort; but at EDSAC, everyone used the initial orders [»wilkMV_1957]
| Quote: a compiler should produce efficient, compact code similar to a resolutely non-clever machine code programmer [»hoarCA_1974]
| Subtopic: basic blocks
Quote: peephole optimization by collecting short instruction sequences with a single entry point, multiple exits, and canonical registers and constants [»bansS10_2006]
| Subtopic: commands vs. expressions
Quote: assembly codes are strings of commands, but the rest of mathematics uses expressions instead of commands; we say 'x + y' instead of 'add x to y' [»straC8_1967]
| Subtopic: language
Quote: 32-bit, register-based intermediate language for PL.8; similar to target machines [»auslM6_1982]
| Quote: C-- is a compiler-target language that is independent of source programming and target architecture [»ramsN6_2000]
| Quote: C-- replaces C as a portable assembly language; includes a low-level, reusable run-time system that hides calling conventions and stack allocation; permits register allocation, liveness analysis, and garbage collection [»joneSP9_1999]
| Quote: PL360 is a simple, readable, recursive, symbolic machine language for IBM 360 computers; improves program structure and style [»wirtN1_1968]
| Note: Thesa is a high-level representation of assembly language code [»cbb_1990, OK]
| Subtopic: disassembly
Quote: accurate disassembly by comparing results of linear sweep and recursive traversal of functions; identifies problematic code, typically 0.3% of size [»schwB10_2002]
| Quote: no disassembly algorithm can identify data that hides behind a conditional branch that is always taken [»schwB10_2002]
| Subtopic: assember specification
Quote: SLED defines abstract, binary, and assembly-language representations of machine instructions [»ramsN5_1997]
| Quote: define machine instructions with fields, tokens, patterns, and constructors; for a wide variety of processors
| Quote: a SLED specification reads like a computer architecture specification; e.g., a specification for a SPARC subset [»ramsN5_1997]
| Quote: check the New Jersey Machine Code toolkit by generating machine code and assembly code; match results with a trusted assembler and a disassembler [»ramsN5_1997]
| Quote: algorithm for decoding machine code from bit patterns alone; accesses significant bits exactly once; assumes unambiguous decoding by the processor [»theiH6_2001]
| Subtopic: binary rewrite
Quote: implemented adaptive profiler (SWAT) with the Vulcan binary rewriting system
| Quote: Squeeze reduces code size by 30% through binary-rewriting; turn common code sequences into procedures, eliminate redundant computation and useless-code, rewrite save/restore [»debrSK3_2000]
| Subtopic: typed assembly language, TAL
Quote: a typed assembly language enforces closures, tuples, and abstract data types without restricting low-level optimizations such as register allocation
| Quote: use typed assembly language (TAL) for dynamic patches and type safety; prevents crashes and many incorrect actions [»hickM6_2001]
| Quote: translate an ML-like language into typed assembly language (TAL); proof carrying code [»morrG1_1998]
| Subtopic: symbolic assembler
Quote: a symbolic code is much easier to use than octal codes [»campM1_1980]
| Quote: the EDSAC initial orders converted symbolic orders to binary form and loaded them into memory; reduces error; 41 words [»wilkMV_1951]
| Quote: use "control combinations" to direct EDSAC's initial orders [»wilkMV_1951]
| Quote: symbolic instructions on the EDSAC took about the same number of characters as a binary code [»campM1_1980]
| Quote: EDSAC programs and sub-routines were always kept in symbolic form; allowed interpretation and checking routines [»campM1_1980]
| Quote: the EDSAC was the primary source for symbolic assembly systems and the subroutine library [»campM1_1980]
| Quote: EDSAC assembly routines provided symbolic subroutine calls and symbolic labels; neither was used much [»campM1_1980]
| Subtopic: assembler codes
Quote: the IBM 360 has a systematic architecture; condition code, registers, memory, 8-bit bytes, 32-bit integers, 32 and 64-bit reals, two's complement [»wirtN1_1968]
| Quote: EDSAC code used 18 orders indicated by letters with an address and length flag [»wilkMV_1951]
| Quote: even though EDSAC code looks like assembly code, the punched code was unintelligible [»campM1_1980]
| Quote: generate machine code after register allocation; table-driven, destructive operations, addressability, external references [»auslM6_1982]
| QuoteRef: cbb_1973 ;;7/10/77 machine instructions are a fairly complicated data structure
| Subtopic: compressed code
Quote: method to compress assembly code; includes procedural abstraction(repeated codes), cross-jumping (common tails), and threaded code [»frasCW6_1984]
| Subtopic: problems with machine code
Quote: machine code programming allows any change; errors may be hard to trace, especially with index registers [»hoarCA_1974]
| Quote: the interface between two machine code instructions is the entire machine [»hoarCA_1974]
|
Related Topics
Group: code generation (30 topics, 593 quotes)
Group: types of programming languages (29 topics, 611 quotes)
Topic: code optimization (54 items)
Topic: Goldstine and von Neumann consistency proof (6 items)
Topic: in-line machine code (5 items)
Topic: intermediate representation of code (31 items)
Topic: code optimization by special case analysis (22 items)
Topic: programming by sequential implementation (26 items)
Topic: register allocation (28 items)
Topic: reverse engineering of software (6 items)
ThesaHelp: URLs for assembly language
|