Development Guidelines
This section outlines information useful for developers interested in contributing to Ddisasm.
Souffle interpreter
For accelerated development of datalog logic, ddisasm can also execute the
Souffle interpreter. To invoke the interpreter, specify a --debug-dir
directory path and the --interpreter parameter, optionally with the path to
ddisasm’s source directory.
For example:
$ cd ddisasm/examples/ex1
$ make
$ mkdir dbg
$ ddisasm --debug-dir dbg --interpreter ../../ --asm ex.s ex
Profiling
Maintaining ddisasm’s high performance for disassembling binaries, both large and small, is an important goal of the project. Profiling new contributions is a necessary step to ensure they do not introduce performance regressions.
To assist with this, ddisasm can execute
Souffle’s profiler by passing
--profile argument, specifing a directory path where profiles of each pass
should be generated.
For the default configuration of ddisasm, --profile can only be used
along with --interpreter. For example:
$ ddisasm --debug-dir dbg --interpreter --profile profiles --asm ex.s examples/ex1/ex
Profiling with the interpreter is relatively slow, however. As an
alternative, ddisasm can be compiled with profiling support by passing
-DDDISASM_SOUFFLE_PROFILING=ON to cmake. In this case, the
--interpreter argument should be omitted.
This generates a profile for each pass, e.g.: profiles/disassembly.prof and
profiles/no-return-analysis.prof. These can be used with souffleprof to
generate a HTML report:
$ souffleprof -j profiles/disassembly.prof
SouffleProf
Generating HTML files...
file output to: profiler_html/1.html