DescriptionPreventing dependency stalls in assembled code with code movement.jpg
English: Given the linear intermediate representation 'a', an optimizing compiler might try to space out instructions with dependencies to prevent data stalls in the processor during execution, particularly when an instruction might take more than one clock cycle to complete (like division or multiplication.) This is called code hoisting or code movement. Note that these sorts of optimizations are generally outdated due to out-of-order execution, but are still useful in preventing register spills.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse
Captions
A graph demonstrating local code movement over IR in an imaginary compiler