2 ms·
Morte isn't actually a superoptimiser, it's a supercompiler. A supercompiler performs as much evaluation as it can at compile-time; it can be thought of as inl
by chriswarbo 9y ago
Morte isn't actually a superoptimiser, it's a supercompiler.
A supercompiler performs as much evaluation as it can at compile-time; it can be thought of as inlining every function call, and constant folding every literal.
A superoptimiser is a search procedure which generates programs, e.g. starting with individual machine instructions, then pairs of machine instructions, and so on, and checks whether any of them behave the same as the given program; if so, they're used as the output.
Supercompilation is 'top down': we refine the given program again and again until there's nothing more to do. Superoptimisation is 'bottom up': we build up from nothing until we have a binary which implements the given program.