Releases: santiontanon/mdlz80optimizer
Releases · santiontanon/mdlz80optimizer
MDL 2.6.2
This is a small safety improving and maintenance release.
Changes since 2.6.1:
- improved the reliability of the pattern-based optimizer by creating a new semi-formal evaluation framework to verify an optimization pattern is safe and correct. Most optimization patterns have been verified or corrected, so, MDL should generate safer optimizations now (this is the main update for this release).
- Other updates: improved compatibility with tniasm, made binary smaller by removing some dependencies
MDL 2.6.1
This is a small bug-fixing release
Changes since 2.6.1:
- Fixed bug when displaying the "z" flag in mdl-watch:
- Fixed some bugs in sjasm, sjasmplus and tniasm dialects (split tniasm into tniasm045 and tniasm10)
- Fixed some instruction definitions for missing registers/flags
MDL 2.6
Changes since v2.5:
- improved code execution functionality:
- MDL can now provide execution stats such as min/average/max execution time of each function or hotspots
- you can set watches in the code that will print during execution
- rom mapper configs to run programs that use a mapper
- visual call graph generation (-dot-cg)
- sjasm style symbol files (-st-sjasm)
- new execution flow analyzer that attempts to guess the destination of all "ret" and "jp (hl/ix/iy)" instructions (trying to find jumptables, etc.) to allow for further optimizations
- general stability, compatibility, accuracy and bug fixes
MDL 2.5
Changes since v2.4:
- support for WLA-DX assembler (only z80 syntax)
- new "code execution" functionality (-e) that basically takes a piece of assembler code, and executes it, giving you stats of execution time, register values, etc. Useful for optimizing code without running it in a real system or emulator.
- many general improvements (more optimization patterns, better error messages, better dissassembler, etc.)
MDL 2.4
Changes since v2.3:
- added more optimization patterns (and additional safety checks for stack operations) for SDCC.
- added per-function size/time reports in the summary files generated with the -sft flag.
- better support for sdcc/sdasz80 dialect (.incbin)
- added some rudimentary disassembling functionality (since it was trivial to add, given all the machinery MDL already has)
- improved the quality of the -asm+:html output, including syntax highlighting, label hyperlinks, and the ability to interpret data graphics, and auto generate .png files with graphic data (this last thing is experimental and has limited support for now).
- new pragma "mdl:self-modifying" to mark self-modifying code, so that the optimizers can act accordingly.
v2.4dev
Changes since v2.3:
- added some more optimization patterns (and additional safety checks for stack operations) for SDCC.
- added per-function size/time reports in the summary files generated with the -sft flag.
- better support for sdcc/sdasz80 dialect (.incbin)
MDL 2.3
Changes since v2.2:
- Better support for tniasm (%if/%else/%endif, %macro, %error)
- Reduced the initialization time of the search-based optimizer by 60% (resulting on a 30%-40% reduction in execution time overall)
- New data block optimizer (-do) that tries to look for data blocks that are repeated or can be optimized in other ways to save space
- Better support for sjasmplus
- Many bug fixes
v2.3dev
Changes since v2.2:
- Better support for tniasm (%if/%else/%endif, %macro, %error)
- Reduced the initialization time of the search-based optimizer by 60% (resulting on a 30%-40% reduction in execution time overall)
- New data block optimizer (-do) that tries to look for data blocks that are repeated or can be optimized in other ways to save space
- Better support for sjasmplus
mdl 2.2
Changes since v2.1:
- Improved support for tniasm (%res8, %res16, %symfile, %expfile, phase, dephase)
- Improved support for sjasmplus (quotes in numeric constants)
- Fixed a bug in handling the "r" register
- Added a few more optimization patterns
- Do not perform tail-recursion optimization ("call/ret" -> "jp") when the target function takes parameters from the stack.
- Initial support for z80next (all instructions supported, but no new optimization patterns to exploit them have been added)
- Initial support for z180 (all instructions supported, but no new optimization patterns to exploit them have been added)
- Search-based optimizer now can handle "ld" instructions involving memory read/writes, making it generate many more optimizations than the last version (it is now slower too, since it triggers for more lines of code)
MDL 2.1
Changes since v2.0:
- Many improvements to the Search-based optimizer code generation (faster search by better search-space pruning, more CPU ops supported, parallel search using multiple threads, etc.).
- New functionality of the search-based optimizer (triggered with either
-so
or-so-opt
): given an input assembler file/project it applies the search-based optimizer to each block of 2 (or more, specified via flag) CPU instructions, and tries to find a better alternative. This is a very experimental new optimizer that is not yet fully reliable, use at your own risk. - A few more patterns for the pattern-based optimizer.
- Many general improvements/bug fixes/stability updates.