A machine‐independent linker

  title={A machine‐independent linker},
  author={Christopher W. Fraser and David R. Hanson},
  journal={Software: Practice and Experience},
Linkers, although a well‐established component of language translation, are typically machine‐dependent, idiosyncratic, and hard for many users to understand. This paper describes a machine‐independent linker and object language. The linker embodies those linking functions that are machine‐independent and centralizes them in a single tool, simplifying compilers, assemblers, and loaders. Included are descriptions of its operation, implementation, and application. 
A Machine‐Independent Debugger
The design of a nub interface for debugging, a target‐independent implementation of this interface for cdb, and the implementation of cdb itself are described.
Assembly language as object code
Careful exploitation of this fact in the design of the SMAL assembly and object language allows theSMAL assembler itself to be used as a linkage editor, thus eliminating the need for an expensive and often misunderstood system program.
A Machine-independent Debugger
The design of a nub interface for debugging, a target-independent implementation of this interface for cdb, and the implementation of cdb itself are described.
Generation of Intermediate Code
After finishing the first phase of compilation, naturally the authors may enter the second phase, i.e., the synthetic phase, and the main task of this phase is to generate the target code, which should be answered in this chapter.
Relocating machine instructions by currying
The New Jersey Machine-Code Toolkit is an application generator that helps programmers create applications that manipulate machine code, including linkers that relocates machine instructions that are machine-independent.
lcc.NET: targeting the .NET Common Intermediate Language from Standard C
Preliminary measurements suggest that programs compiled by the MSIL back end run two to three times slower than those compiled by lcc native Intel x86 back end, but theMSIL programs have some important diagnostic benefits.
Combining Lock-Free Programming with Cooperative Multitasking for a Portable Multiprocessor Runtime System
The approach to design and implement an operating system kernel which is based solely on non-blocking algorithms and the performance of this lock-free approach is often comparable to established and optimised operating systems and is clearly superior to solutions based on locking.
Supporting FPGA microprocessors through retargetable software tools
1 cc (an ANSI C compiler) targeted at an FPGA system and dasm (a retargetable, flexible assembler) is used, allowing the user to add new custom hardware functions which dasm can assemble correctly to an instruction stream the hardware executes.


High-level binding with low-level linkers
An easy to implement scheme is described by which a compiler can enforce agreement between complex data types in separately compiled modules. The scheme is designed to work with any existing link
Linkers and Loaders
This is a tutorial paper on the linking and loading stages of the language transformation process, and the hnking process is treated in terms of the various times at which it may occur.
Abstract machine modelling to produce portable software—a review and evaluation
The use of abstract machine modelling as a technique for producing portable software, i.e. software which can be moved readily from one computer to another, is discussed.
A portable compiler: theory and practice
An overview of the compiler structure and algorithms is given, emphasizing those areas where theory was helpful, and discussing the approaches taken where theory is lacking.
A comparison of PASCAL intermediate languages
This paper describes three versions of P-code and compares modifications and describes how these modifications may be eliminated by looking at previous work with P- code.
Portable and Adaptable Compilers
To say that a program is “portable” implies that it is a relatively easy and straight forward task to move it from one machine to another; if the effort to move the program is considerably less than
UNIX time-sharing system: Portability of c programs and the UNIX system
It is shown how the UNIX∗ operating system and most of its software have been transported to the Interdata 8/32 and how the source-language representation of most of the code involved is identical in all environments.
The Y programming language
Y is the experimental realization of some recent ideas concerning separate compila t ion and block structure and provides a testbed for experimental work in program portabili ty and code optimization.
Abstraction mechanisms in CLU
This paper provides an introduction to the abstraction mechanisms in CLU by means of programming examples, and it is shown how CLU programs may be written to use and implement abstractions.
An overview of Ada
  • J. Barnes
  • Computer Science
    Softw. Pract. Exp.
  • 1980
The body of the paper is an informal description of the main features of the final language as revised after the Test and Evaluation phase of the DoD project.