Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The Z notation: a reference manual
The Z notation: a reference manual
Using Z: specification, refinement, and proof
Using Z: specification, refinement, and proof
The Definition of Standard ML
Principles of Program Analysis
Principles of Program Analysis
Hi-index | 0.01 |
This paper reports on an experimental application of formal specification to inform analysis of compiled code. The analyses with which we are concerned attempt to recover abstraction and order from the potentially chaotic world of machine code. To illustrate the kind of abstractions of interest, we give a formal model of a simple microprocessor. This is based on a traditional state-based Z specification, but builds on that to produce a behavioural model of the microprocessor. We use the behavioural model to specify a higher-order notion: the concept of a program whose control flow can be decomposed into basic blocks. Finally, we report on the use of our techniques in the development of tools for analysis of compiled code for a real microprocessor.