LCC неоптимизирует, верно? Это нормально, я предполагаю, что вам понадобится много разных компиляторов, потому что никакие две версии одного и того же компилятора и два компилятора не будут реализовывать одну и ту же оптимизацию одинаково.
Я думаю, вам нужно сначала сосредоточиться на дизассемблере, затем проанализировать поток кода, а затем приступить к регистрации использования. На самом деле, перед этим выберите ISA (набор инструкций) и здесь один и тот же код и тот же компилятор будут выдавать разные результаты для одной и той же оптимизации в зависимости от конкретной цели, даже от конкретных целей в одном семействе.
Тема результатов распределения регистров благодаря алгоритмам оптимизации достаточно широка и очень динамична. Это на уровне сравнительного анализа. Несмотря на то, что это все еще звучит как интересная тема, я думаю, вы обнаружите, что с оптимизацией или без нее, с десятками регистров общего назначения или без них, большинство компиляторов заканчивают тем, что используют только несколько регистров. (Несколько для передачи аргументов и несколько функций для реализации функции)