Во времена, когда еще не было кешей и предсказаний ветвлений, создание самомодифицирующегося кода для определенных видов оптимизации было относительно обычным делом, если не поощрять его. Вероятно, это было наиболее распространено в играх и демоверсиях, написанных на ассемблере в эпоху от 8-битной до ранней 32-битной, таких как Amiga.
Я не уверен, выпускали ли какие-нибудь компиляторы тех дней самомодифицирующийся ассемблер или машинный код.
Что мне интересно, так это то, есть ли какие-нибудь текущие / современные компиляторы, которые это делают. Очевидно, это было бы бесполезно или слишком сложно на мощных процессорах с кешами.
Но как насчет очень многих простых процессоров, таких как используемые во встраиваемых системах? Считается ли самомодифицирующийся код жизнеспособной стратегией оптимизации любыми современными компиляторами для любого простого / 8-битного / встроенного процессора?
Есть вопрос с похожим названием: «Есть ли здесь самоулучшающийся компилятор?», но учтите, что он не на ту же тему:
Обратите внимание, что я говорю о компиляторе, который улучшает сам себя, а не о компиляторе, который улучшает код, который он компилирует.