Short: A powerfull assembly source optimizer - v1.0b Author: devulder@info.unicaen.fr (Samuel DEVULDER) Uploader: devulder@info.unicaen.fr (Samuel DEVULDER) Type: dev/asm Popt ---- Popt is an optimizer of assembly sourcefile. It does various standard peephole optimizations by pattern-matching. It ranges from 1 intruction lookahead to 3 and many more ! It makes more job than usual bluid-in assembler optimizer and uses data-flow analysis to find which register are used or not. With those informations it is capable of deleting intructions that are of no use and re-assigning registers to produce a code of better quality/looking. It is specialy powerfull on code produced by C-compilers (even those that optimize their code !). See popt.doc for further explanations. If you're a fan of benchmarks, here is what Popt is able to do to the well-known "DHRYSTONE" Benchmark Program (Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013) compiled with the non-registered dcc version of DICE, by Matt DILLON: +=====================================================================+ | GVP A530 (68EC030@40Mhz) | +=====================================================================+ | | Dhrystones/sec | speed increase | +-----------------------------------+----------------+----------------+ | no opt. (dhr.a) | 6846 | --- | | opt. for 68000 (dhr000.a) | 7899 | +15.4% | | opt. for 68020/30 (dhr020.a) | 8015 | +17.1% | | opt. for 68020/30 (dhr020i.a) * | 8062 | +17.8% | | opt. for 68040 (dhr040.a) | 7830 | +14.4% | | opt. for 68040 (dhr040i.a) * | 7837 | +14.5% | +=====================================================================+ | Stock A500 (68000@7Mhz) | +=====================================================================+ | | Dhrystones/sec | speed increase | +-----------------------------------+----------------+----------------+ | no opt. (dhr.a) | 775 | --- | | opt. for 68000 (dhr000.a) | 912 | +17.7% | | opt. for 68020/30 (dhr020.a) | 912 | +17.7% | | opt. for 68040 (dhr040.a) | 883 | +13.9% | +-----------------------------------+----------------+----------------+ You can find the source code of those programs (dhr.a, dh0?0.a) to have a look to the quality of the optimisation. The source is dhr.a and the destinations are dhr0?0.a. This version is a beta version. Little testing has been done. It is rather experimantal. Use it at your own risks. Please feel free to report any bugs or comments to me. Happy optimizations ! Sam. _________________ * The star indicates that the code uses special 68020+ instructions or addressing modes. ============================= Archive contents ============================= Original Packed Ratio Date Time Name -------- ------- ----- --------- -------- ------------- 0 0 0.0% 14-Feb-96 09:03:40 + 11693 2906 75.1% 13-Feb-96 22:20:44 +dhr.a 23939 3937 83.5% 13-Feb-96 22:21:06 +dhr000.a 24779 4019 83.7% 13-Feb-96 22:21:32 +dhr020.a 23786 3935 83.4% 13-Feb-96 22:22:00 +dhr020i.a 25997 4117 84.1% 13-Feb-96 22:22:24 +dhr040.a 25560 4092 83.9% 13-Feb-96 22:22:52 +dhr040i.a 56041 8022 85.6% 08-Jan-96 11:54:54 +peephole.doc 95080 44726 52.9% 13-Feb-96 22:20:36 +popt 173836 72175 58.4% 13-Feb-96 22:13:06 +popt.apurify 17070 7237 57.6% 13-Feb-96 23:58:48 +popt.doc 3315 1163 64.9% 14-Feb-96 09:03:26 +popt.readme -------- ------- ----- --------- -------- 481096 156329 67.5% 08-Mar-96 05:36:14 12 files