BURS (bottom-up rewrite system) theory tackles the problem of taking a complex expression tree or intermediate language term and finding a good translation to machine code for a particular architecture. Implementations of BURS often employ dynamic programming to solve this problem.
BURS can also be applied to the problem of designing an instruction set for an application-specific instruction set processor. [1]