Releases: santiontanon/mdlz80optimizer
MDL 2.1 (dev)
Just a development version with a more efficient search-based optimizer (and that can also do multithreaded search).
MDL 2.0
The main new thing that version 2.0 introduces is a new "search-based optimizer" (-so). Compared to the other optimizers, the search-based optimizer does NOT optimize existing code, but generates optimal code from scratch. You pass in a specification (e.g., I want the smallest code that calculates "hl += a"), and mdl will search through the space of all possible assembler programs to find the shortest/fastest (you can configure the optimization goal). Note: only very small programs can be generated this way. 4, 5 or maybe up to 6 instructions is pretty much the limit within some reasonable time frame.
See the documentation on how to use it here: https://github.com/santiontanon/mdlz80optimizer/blob/master/doc/so-specification.md
There are also some bug fixing and general maintenance fixes for the previous optimizers, as well as improved compatibility with some dialects, like tniasm.
MDL 1.9.1
This is just a maintenance release with some bug fixes (and deactivating some of the safety labels that could be problematic, which can be reactivated with -safety-labels-for-jumps-to-constants if necessary)
MDL 1.9
Changes since the last version:
- improved code safety during optimization by creating auxiliary labels for instructions like "jp nz,$+5" to replace the "$+5" expressions.
- simplified the way flags work
- removed the deprecated -poapply flag
- improved support for sjasmplus and macro80
- improved the compatibility of the assembler generated with -asm-dialect, so that the code generated by mdl can then be compiled by the respective dialect assemblers (glass, sjasm, sjasmplus, asmsx, pasmo, etc.)
- many bug fixes
MDL beta 1.8.1
Small release focused on improving compatibility with sjasmplus/sjasm
mdl beta 1.8
Changes since v1.7:
- A few more optimization patterns
- reparenthesization of expressions that could be evaluated differently in different assemblers, for safety
- better support for asmsx/pasmo/sjasmplus
- new "-equ" flag to define symbols (needed for some pasmo projects)
- new functionalities in the code reorganizer: (1) "code merger", that identifies blocks of code that are identical (e.g., the usual "xor a;ret" blocks at the end of some functions), and leaves only one, saving space. (2) unreachable code detection.
- many bug fixes!
mdl beta v1.7
Changes since v1.6:
- Initial support for macro80/m80 dialect!
- new "inliner" functionality in the core-reorganization optimizer, which detects functions that are called only once and tries to inline them
- improved support for winape and sjasm
- made the pattern-based optimizer do multiple passes (2 passes by default, but you can choose the number of passes with -po1/-po2/-po3 if you want to make it faster (less passes))
- made ANSI color codes off by default if MDL detects we are not on a unix terminal (can be turned on again via the -ansion flag)
- many small bug fixes and improvements
mdl beta v1.6
Changes since last version:
- Expanded compatibility with asmsx and sjasm (mdl now supports sjasm files with multiple "output" binaries)
- Fixed several issues with the reorganizer optimizer (which was breaking in a few cases with local labels or relative jumps)
- New -asm+:html flag to generate an html version of your source code with annotations (this is extremely useful to me to debug MDL, not sure if it has any utility beyond that, but I exposed it externally to users just in case)
- New -po-ldo flag to prevent optimizations that depend on specific values of labels (which were dangerous to perform on code bases that were still being worked on)
- block-disable optimizations with "mdl:no-opt-start" and "mdl:no-opt-end"
- Many other small improvements and bug fixes (many thanks to everyone reporting issues and corner cases!)
mdl beta v1.5
Changes since the last version:
- new "-asm-dialect" flag to generate output in the target assembler dialect (this will replace "-poapply" soon, which will be deprecated once -asm-dialect is robust enough)
- many compatibility improvements to sjasm/sdcc/asmsx/sjasmplus (thanks a lot to everyone that has been testing and reporting issues!)
- improved reorganizer optimizer safety
- many internal small improvements (added tags to patterns for selecting which to load and which not to load, added colors to warning and error messages, improved error messsages in many cases where MDL would have jut crashed in the past, etc.)
mdl beta v1.4
Changes with respect to v1.3:
- Added a new optimizer: the "code reorganizer" (triggered with the "-ro" flag)
- Added initial support for the sjasmplus dialect