Each of these constraints is specified in the header by an [os] or [mpu]
line. For the symbol table to be usable on a disassembly, both
constraints must be met:
* Either [os] is unset, no OS is used for disassembly, or the OS type is
the same as the [os] constraint (either "fx" or "cg");
* Either [mpu] is unset, the disassembled target has no specified MPU,
or the MPU type of the target is the same as the [mpu] constraint (eg
"sh7305").
New features:
* The syscall pass now resolves syscalls for the input target, provided
that an OS is mapped on the ROM region.
* Formalized the variations of print's arguments as a sequence (tree, to
be precise) of /promotions/.
* Added a short notion of Symbol and SymbolTable, and a loader for them.
Data files of type "symbol" are read as such and provide name to
syscalls or arbitrary addresses.
Code changes:
* The disassembly operation of the command-line interface is now finally
in its own file with more room.
* Encoded the tree structure of promotions as a sequence of (mainly
tail-calling) inter-calling methods in the print pass.
-> The cfg pass loads the function into memory, annotates leaders and
jumps, and resolves delay slots.
-> The pcrel pass currently computes locations for pc-relative moves and
jumps, but does not yet compute the pc-relative moved data.
-> The print pass displays the results of analysis with various layout
and formatting options.
-> The Library class handles the loading and parsing of data files. This
is because any fxos application will use this since everyone will
have only one library.
-> Add a logging function that automatically format()s everything in
sight with basic logging levels and a verbose mode. Standard logs are
prefixed with __func__ for debugging purposes.
-> Allow format() to take std::string arguments for %s by statically
extracting c_str()s.
-> Add a simple timing utility to understand which file load or
disassembler pass takes up the time.