Title :
What assembly language programmers get up to: control flow challenges in reverse compilation
Author :
Johnstone, Adrian ; Scott, Elizabeth ; Womack, Tim
Author_Institution :
Dept. of Comput. Sci., London Univ., UK
fDate :
2/1/2000 12:00:00 AM
Abstract :
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
Keywords :
C language; assembly language; data flow analysis; data flow graphs; digital signal processing chips; program compilers; program control structures; reverse engineering; ADSP-21xx digital signal processors; ANSI C; asm21toc reverse compiler; assembly code analysis; assembly language programming; hierarchical structural control flow information; high-level control flow analysis; high-level language programming; high-level looping constructs; high-level selection constructs; interprocedural control flow analysis; low-level code porting; low-to-high-level language translation; merged call-graph/dataflow representation; nondisjoint functions; nonreducible control flow constructs; program control flow; reverse compilation; self-modifying code; statistics; system reengineering project; Assembly systems; Control systems; Data mining; Digital signal processors; High level languages; Information analysis; Program processors; Programming profession; Signal analysis; Signal design;
Conference_Titel :
Software Maintenance and Reengineering, 2000. Proceedings of the Fourth European
Conference_Location :
Zurich
Print_ISBN :
0-7695-0546-5
DOI :
10.1109/CSMR.2000.827315