Topic: machine code and assembly language

topics > computer science > programming > Group: program representation

code generation
types of programming languages

code optimization
Goldstine and von Neumann consistency proof
in-line machine code
intermediate representation of code
code optimization by special case analysis
programming by sequential implementation
register allocation
reverse engineering of software
URLs for assembly language


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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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 up

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

Related Topics up

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

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