News
Befunge
Doom
Inform
Quake
RISC OS
- BeagleBoard
- Code
- Games
- Utilities
- Miscellaneous
Misc
Links
Contact
|
decgen
V1.30 (25/9/2011): decgen.zip (390,923 bytes). Includes source and binaries for RISC OS (3.5+), Linux and Windows.
A tool for generating instruction set decoders based around user-provided 'encoding' files and 'action' files. Includes example encodings covering the majority of the ARM instruction sets and architectures.
Changes in this version
- Fixed a few typos in the supplied encodings
- Added '-void' option to prevent decgen from attempting to return the value of decoder functions
- Added hash to end of generated leaf function names, to prevent name clashes where multiple instances of an action are required to cope with differing parameters
- Optimised node::collect to be roughly O(NlogN) instead of roughly O((N^2)/2)
- Also fixed node::collect to return all pointers unique to node pointers, instead of just all pointers to pointers to unique nodes
- Added a second node::collect implementation which just returns pointers to the unique nodes, instead of pointers to unique pointers to nodes
- Reduced memory usage by making build_tree deduplicate the subtree it's just built if the root node is a mask node
- Fixed node::shrink to not crash when shrinking a node containing null child pointers
- Attempted to optimise determine_best_node() and split_on_field() to allow them to early-exit if they think they've found the best result, or to skip exhaustive checks if they think the node being checked can't score better than the current one. However the code is a bit broken and produces different trees as output, so it currently disabled.
|