Object code optimizer: Difference between revisions

Content deleted Content added
Other optimizers: Removed UPX as there are dozens of other exe compressors as well. Not sure if exe compression would count as "binary optimization" at all
replaced inline ELs by refs
Line 4:
 
==Examples==
*The "COBOL Optimizer" developed by [[Capex Corporation]] in the mid 1970s for [[COBOL]]. This type of optimizer depended, in this case, upon knowledge of 'weaknesses' in the standard IBM COBOL compiler, and actually replaced (or [[patch (computing)|patch]]ed) sections of the object code with more efficient code. The replacement code might replace a linear [[lookup table|table lookup]] with a [[binary search algorithm|binary search]] for example or sometimes simply replace a relatively slow instruction with a known faster one that was otherwise functionally equivalent within its context. This technique is now known as [[strength reduction]]. For example, on the [[IBM/360]] hardware the '''<code>CLI'''</code> instruction was, depending on the particular model, between twice and 5 times as fast as a '''<code>CLC'''</code> instruction for single byte comparisons.<ref>http://www.bitsavers.org/pdf/ibm/360/A22_6825-1_360instrTiming.pdf</ref><ref>http://portal.acm.org/citation.cfm?id=358732&dl=GUIDE&dl=ACM</ref>
 
===Advantages===
Line 19:
 
More recently developed 'binary optimizers' for various platforms, some claiming [[novelty (patent)|novelty]] but, nevertheless, essentially using the same (or similar) techniques described above, include:
*[[The Sun Studio Binary Code Optimizer]] [<ref>http://developers.sun.com/solaris/articles/binopt.html]</ref> - which requires a [[software performance analysis|profile]] phase beforehand
*Design and Engineering of a Dynamic Binary Optimizer - from [[IBM]] T. J. Watson Res. Center (FebFebruary 2005) [<ref>http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/5/30187/01386661.pdf?arnumber=1386661] [</ref><ref>http://portal.acm.org/citation.cfm?id=1254810.1254831]</ref>
*QuaC: Binary Optimization for Fast [[self-modifying code|Runtime Code Generation]] in [[C (programming language)|C]] [<ref>http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/CSD-94-792.pdf]</ref> - (which appears to include some elements of JIT)
*[[DynamoRIO]]
*COBRA: An Adaptive Runtime Binary Optimization Framework for Multithreaded Applications [<ref>http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&arnumber=4343832&isnumber=4343799]</ref>
*Spike Executable Optimizer (Unix kernel) [<ref>http://www.cesr.ncsu.edu/fddo4/papers/spike_fddo4.pdf]</ref>
*[http://www.cs.arizona.edu/solar/ "SOLAR" Software Optimization at Link-time And Run-time]