A loader is a systems program used by an operating system (OS) to load a binary executable file onto memory to execute it. The internal format of a binary executable file is called the binary-file format (BFF); this format is dependent on the OS and the particular computer architecture it runs on. Traditionally, when developing machine-code manipulation tools such as binary translators and disassemblers, developers need to write a decoder for each type of binary executable file they want to manipulate, i.e. for n different binary executables, they need to write n different loaders. With the advent of binary translation technology and the increased number of machines and operating systems, a retargetable loader (RL) would eliminate the effort required in creating different loaders; if only one such environment existed. SRL, a simple retargetable loader is a first attempt at developing an RL framework by means of a simple BFF grammar. Three different environments, (x86,DOS,EXE), (x86,Windows,NE) and (Sparc,Solaris,ELF), were used as the basis for the development and testing of SRL. The three environments give a good coverage of different BFFs currently in use by OSs for RISC and CISC machines.
[1]
Murray Hill,et al.
Yacc: Yet Another Compiler-Compiler
,
1978
.
[2]
Anthony M. Sloane,et al.
Eli: a complete, flexible compiler construction system
,
1992,
CACM.
[3]
E. Schmidt,et al.
Lex—a lexical analyzer generator
,
1990
.
[4]
Cristina Cifuentes,et al.
Decompilation of binary programs
,
1995,
Softw. Pract. Exp..
[5]
Frank Yellin,et al.
The Java Virtual Machine Specification
,
1996
.
[6]
Richard L. Sites,et al.
Binary translation
,
1993,
CACM.
[7]
William M. Waite,et al.
Compiler Construction: Craftmanship or Engineering?
,
1996,
CC.