Specifying representations of machine instructions

作者: Norman Ramsey , Mary F. Fernández

DOI: 10.1145/256167.256225

关键词: DecompilerMachine codeSpecification languageAssembly languageProgramming languageCode generationDebuggerObject codeComplex instruction set computingComputer science

摘要: We present SLED, a specification language for Encoding and Decoding, which describes, abstract, binary, assembly-language representations of machine instructions. Guided by SLED specification, the New Jersey Machine-Code Toolkit generates bit-manipulating code use in applications that process code. Programmers can write such at an assembly level abstraction, toolkit enables to recognize emit binary used hardware. is suitable describing both CISC RISC machines; we have specified MIPS R3000, SPARC, Alpha, Intel Pentium instructions, users written specifications Power PC Motorola 68000. The article includes representative excerpts from our SPARC specifications. uses four elements; fields tokens describe parts instructions; patterns instructions or group constructors map between abstract levels. By combining elements different ways, supports machine-independent implementations machine-level concepts like conditional assembly, span-dependent relocatable addresses, object code, sections, relocation. be checked automatically consistency with existing assemblers. implementation largely determined constructors. normal form facilitates construction encoders decoders. describes its use. has been help build several applications. built retargetable debugger retargetable, optimizing linker. Colleagues dynamic generator, decompiler, execution-time analyzer. efficient code; example, linker emits up 15% faster than it language, making 1.7-2 times produce a.out directly using assembler.

参考文章(27)
Madge T. Griswold, Ralph E. Griswold, The ICON Programming Language, 2nd Ed. Prentice Hall Professional Technical Reference. ,(1990)
John Dryer Wick, Automatic generation of assemblers. Yale University. ,(1975)
Lal George, Florent Guillame, John H. Reppy, A Portable and Optimizing Back End for the SML/NJ Compiler compiler construction. pp. 83- 97 ,(1994) , 10.1007/3-540-57877-3_6
Madge T. Griswold, Ralph E. Griswold, The Icon programming language ,(1983)
Allen Newell, C Gordon Bell, None, Computer Structures: Readings and Examples, McGraw-Hill. ,(1971)
Steven Lucco, Robert Wahbe, Susan L. Graham, Adaptable binary programs usenix annual technical conference. pp. 26- 26 ,(1995)
Thomas G. Szymanski, Assembling code for machines with span-dependent instructions Communications of the ACM. ,vol. 21, pp. 300- 308 ,(1978) , 10.1145/359460.359474
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, Craig Chambers, Vortex Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications - OOPSLA '96. ,vol. 31, pp. 83- 100 ,(1996) , 10.1145/236337.236344
Mary Fernández, Norman Ramsey, Automatic checking of instruction specifications international conference on software engineering. pp. 326- 336 ,(1997) , 10.1145/253228.253300