Serializing C intermediate representations for efficient and portable parsing. Jeffrey A. Meister, Jeffrey S. Foster, and Michael Hicks. Software, Practice, and Experience, 40(3):225-238, February 2010.

C static analysis tools often use intermediate representations (IRs) that organize program data in a simple, well-structured manner. However, the C parsers that create IRs are slow, and because they are difficult to write, only a few implementations exist, limiting the languages in which a C static analysis can be written. To solve these problems, we investigate two language-independent, on-disk representations of C IRs: one using XML, and the other using an Internet standard binary encoding called XDR. We benchmark the parsing speeds of both options, finding the XML to be about a factor of two slower than parsing C and the XDR over six times faster. Furthermore, we show that the XML files are far too large at 19 times the size of C source code, while XDR is only 2.2 times the C size. We also demonstrate the portability of our XDR system by presenting a C source code querying tool in Ruby. Our solution and the insights we gained from building it will be useful to analysis authors and other clients of C IRs. We have made our software freely available for download at http://www.cs.umd.edu/projects/PL/scil/.

[ http | .pdf ]

@ARTICLE{meister10cir,
  AUTHOR = {Jeffrey A. Meister and Jeffrey S. Foster and Michael Hicks},
  TITLE = {Serializing {C} intermediate representations for efficient and portable parsing},
  JOURNAL = {Software, Practice, and Experience},
  MONTH = FEB,
  VOLUME = 40,
  NUMBER = 3,
  PAGES = {225--238},
  HTTP = {http://www.cs.umd.edu/projects/PL/scil},
  YEAR = 2010
}

This file has been generated by bibtex2html 1.69