The SPARC architecture manual: version 8
The SPARC architecture manual: version 8
Systems programming with Modula-3
Systems programming with Modula-3
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
A retargetable debugger
Efficient software-based fault isolation
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Correctness of trap-based breakpoint implementations
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ATOM: a system for building customized program analysis tools
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Shade: a fast instruction-set simulator for execution profiling
SIGMETRICS '94 Proceedings of the 1994 ACM SIGMETRICS conference on Measurement and modeling of computer systems
Optimally profiling and tracing programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simple and effective link-time optimization of Modula-3 programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
EEL: machine-independent executable editing
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
A simple solver for linear equations containing nonlinear operators
Software—Practice & Experience
Relocating machine instructions by currying
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Automatic checking of instruction specifications
ICSE '97 Proceedings of the 19th international conference on Software engineering
Automatic Derivation of Code Generators from Machine Descriptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Assembling code for machines with span-dependent instructions
Communications of the ACM
Evolution of the meta-assembly program
Communications of the ACM
The ICON Programming Language
Literate Programming Simplified
IEEE Software
A Portable and Optimizing Back End for the SML/NJ Compiler
CC '94 Proceedings of the 5th International Conference on Compiler Construction
Describing instruction set processors using nML
EDTC '95 Proceedings of the 1995 European conference on Design and Test
Automatic generation of assemblers.
Automatic generation of assemblers.
Computer structures: Readings and examples (McGraw-Hill computer science series)
Computer structures: Readings and examples (McGraw-Hill computer science series)
TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings
Automatic checking of instruction specifications
ICSE '97 Proceedings of the 19th international conference on Software engineering
Cryptographic verification of test coverage claims
ESEC '97/FSE-5 Proceedings of the 6th European SOFTWARE ENGINEERING conference held jointly with the 5th ACM SIGSOFT international symposium on Foundations of software engineering
Cryptographic Verification of Test Coverage Claims
IEEE Transactions on Software Engineering
Derive: a tool that automatically reverse-engineers instruction encodings
DYNAMO '00 Proceedings of the ACM SIGPLAN workshop on Dynamic and adaptive compilation and optimization
Machine-adaptable dynamic binary translation
DYNAMO '00 Proceedings of the ACM SIGPLAN workshop on Dynamic and adaptive compilation and optimization
A new approach to assembly software retargeting for microcontrollers
ASP-DAC '00 Proceedings of the 2000 Asia and South Pacific Design Automation Conference
Implementation aspects of a SPARC V9 complete machine simulator
ACSC '02 Proceedings of the twenty-fifth Australasian conference on Computer science - Volume 4
A formal model of real-time program compilation
Theoretical Computer Science
A study of compiler techniques for multiple targets in compiler infrastructures
ACM SIGPLAN Notices
A transformational approach to binary translation of delayed branches
ACM Transactions on Programming Languages and Systems (TOPLAS)
An Empirical Study of Retargetable Compilers
PSI '02 Revised Papers from the 4th International Andrei Ershov Memorial Conference on Perspectives of System Informatics: Akademgorodok, Novosibirsk, Russia
Timing Analysis of Assembler Code Control-Flow Paths
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
A Formal Model of Real-Time Program Compilation
ARTS '99 Proceedings of the 5th International AMAST Workshop on Formal Methods for Real-Time and Probabilistic Systems
High Level Synthesis from Sim-nML Processor Models
VLSID '03 Proceedings of the 16th International Conference on VLSI Design
Sleipnir-An Instruction-Level Simulator Generator
ICCD '00 Proceedings of the 2000 IEEE International Conference on Computer Design: VLSI in Computers & Processors
TDL: a hardware description language for retargetable postpass optimizations and analyses
Proceedings of the 2nd international conference on Generative programming and component engineering
Pragmatic aspects of reusable program generators
Journal of Functional Programming
Evaluation of scheduling and allocation algorithms while mapping assembly code onto FPGAs
Proceedings of the 14th ACM Great Lakes symposium on VLSI
Automatic translation of software binaries onto FPGAs
Proceedings of the 41st annual Design Automation Conference
High-level views on low-level representations
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Dynamic binary translation using run-time feedbacks
Science of Computer Programming - Software analysis, evolution and re-engineering
CISL: a class-based machine description language for co-generation of compilers and simulators
International Journal of Parallel Programming - Special issue: The next generation software program
Strongly typed memory areas programming systems-level data structures in a functional language
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
The Project Maxwell assembler system
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
An open-source binary utility generator
ACM Transactions on Design Automation of Electronic Systems (TODAES)
An overview of a compiler for mapping software binaries to hardware
IEEE Transactions on Very Large Scale Integration (VLSI) Systems
Processor Description Languages
Processor Description Languages
Hybrid-compiled simulation: An efficient technique for instruction-set architecture simulation
ACM Transactions on Embedded Computing Systems (TECS)
Orthogonal parallel processing in vector Pascal
Computer Languages, Systems and Structures
Experience in the design, implementation and use of a retargetable static binary translation framework
Walkabout: a retargetable dynamic binary translation framework
Walkabout: a retargetable dynamic binary translation framework
Automatically generating instruction selectors using declarative machine descriptions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mixing concrete and symbolic execution to improve the performance of dynamic test generation
NTMS'09 Proceedings of the 3rd international conference on New technologies, mobility and security
Generation of control and data flow graphs from scheduled and pipelined assembly code
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Building the world from first principles: declarative machine descriptions and compiler construction
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
Applications, implementation and performance evaluation of bit stream programming in erlang
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Architecture- and OS-Independent binary-level dynamic test generation
ICICS'09 Proceedings of the 11th international conference on Information and Communications Security
Converting intermediate code to assembly code using declarative machine descriptions
CC'06 Proceedings of the 15th international conference on Compiler Construction
Design of an automatically generated retargetable decompiler
CSCC'11 Proceedings of the 2nd international conference on Circuits, Systems, Communications & Computers
RockSalt: better, faster, stronger SFI for the x86
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
GDSL: A Generic Decoder Specification Language for Interpreting Machine Language
Electronic Notes in Theoretical Computer Science (ENTCS)
Scalable formal machine models
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
The GDSL toolkit: Generating Frontends for the Analysis of Machine Code
Proceedings of ACM SIGPLAN on Program Protection and Reverse Engineering Workshop 2014
Hi-index | 0.00 |
We present SLED, a specification language for Encoding and Decoding, which describes, abstract, binary, and assembly-language representations of machine instructions. Guided by a SLED specification, the New Jersey Machine-Code Toolkit generates bit-manipulating code for use in applications that process machine code. Programmers can write such applications at an assembly language level of abstraction, and the toolkit enables the applications to recognize and emit the binary representations used by the hardware. SLED is suitable for describing both CISC and RISC machines; we have specified representations of MIPS R3000, SPARC, Alpha, and Intel Pentium instructions, and toolkit users have written specifications for the Power PC and Motorola 68000. The article includes representative excerpts from our SPARC and Pentium specifications. SLED uses four elements; fields and tokens describe parts of instructions; patterns describe binary representations of instructions or group of instructions; and constructors map between the abstract and binary levels. By combining the elements in different ways, SLED supports machine-independent implementations of machine-level concepts like conditional assembly, span-dependent instructions, relocatable addresses, object code, sections, and relocation. SLED specifications can be checked automatically for consistency with existing assemblers. The implementation of the toolkit is largely determined by our representations of patterns and constructors. We use a normal form that facilitates construction of encoders and decoders. The article describes the normal form and its use. The toolkit has been used to help build several applications. We have built a retargetable debugger and a retargetable, optimizing linker. Colleagues have built a dynamic code generator, a decompiler, and an execution-time analyzer. The toolkit generates efficient code; for example, the linker emits binary up to 15% faster than it emits assembly language, making it 1.7-2 times faster to produce an a.out directly than by using the assembler.