Computer architecture manuals describe the instruction set of the machine and the semantics of the machine instructions by a combination of natural language and ISP (Instruction Set Processor) descriptions. The syntax of the instructions in assembly is well defined in the form of tables in the manual. However the semantics is not so well specified and descriptions vary widely from one manual to another. When developing a retargetable binary translator as much as possible needs to be specified in order to automatically generate code from specifications, hence separating machine-independent issues from the manual coding stage. The specification of the semantics of machine instructions is one such task, with the aim of generating suitable code for an intermediate representation that is to be used during the analysis stage. We describe the design process used to develop a semantic specification language, SSL, to integrate into a retargetable binary translation framework. The techniques described herein are suitable not just to binary translators but also to machine-code manipulation tools such as optimizing compilers, binary profilers, instrumentors, and binary debuggers.
[1]
James H. Cross,et al.
Reverse engineering and design recovery: a taxonomy
,
1990,
IEEE Software.
[2]
Roger Duke,et al.
Formal Object Oriented Specification Using Object-Z
,
2000
.
[3]
James R. Larus,et al.
EEL: machine-independent executable editing
,
1995,
PLDI '95.
[4]
Norman Ramsey,et al.
The New Jersey Machine-Code Toolkit
,
1995,
USENIX.
[5]
J. Michael Spivey,et al.
The Z notation - a reference manual
,
1992,
Prentice Hall International Series in Computer Science.
[6]
Barry J. Epstein,et al.
The Sparc Architecture Manual/Version 8
,
1992
.
[7]
Raymond J. Hookway,et al.
DIGITAL FX!32: Combining Emulation and Binary Translation
,
1997,
Digit. Tech. J..
[8]
Norman Ramsey,et al.
Specifying representations of machine instructions
,
1997,
TOPL.