What assembly programmers get up to: control flow challenges in reverse compilation

Research output: Contribution to conferencePaper


The analysis of assembly code to provide a high-level control flow view in terms of the usual high-level looping and selection constructs is of great assistance to high-level language programmers who are attempting to understand and port low-level code as part of a system re-engineering project. This paper describes the control flow analyser component of our asm21toc reverse compiler from assembly language programs for the ADSP-21xx family of digital signal processors to ANSI C. We give a brief overview of the class of processors and programs that we have studied so as to motivate the design of our reverse compiler. We describe the merged call-graph/dataflow representation that supports our analyses and the way in which hierarchical structural control flow information is extracted and stored. We give summary statistics showing the usage of various classes of control flow structure, along with occurrences of non-disjoint functions, self-modifying code and non-reducible control flow constructs.
Original languageEnglish
Number of pages10
Publication statusPublished - 3 Mar 2000

Cite this