Когда в генераторе кода заканчиваются регистры, в которых хранятся промежуточные и часто используемые значения, он разливает регистры , записывая их в память, обычно в области, выделенной из стека. В общем, это недорогая операция, которая сильно зависит от количества регистров в вашем процессоре, параметров, предоставляемых компилятору, и версии самого компилятора.
Вы должны стремиться писать понятный код, а не пытаться перепроектировать генератор кода. Зачастую генератор кода вознаграждает вас за это, генерируя довольно хороший код. Когда вы сталкиваетесь с проблемами производительности, профилировщик должен направить вас к коду, который необходимо пересмотреть. Улучшения обычно делаются структурно или алгоритмически. Уловки кода для улучшения сгенерированного кода часто вращаются вокруг раскрытия информации компилятору; например, значение, которое, по его мнению, является динамическим, действительно статичным, или упорядочение структур данных для более эффективного использования ресурсов кэша.
Если вам придется перепроектировать генератор кода, вы также можете переписать последовательность на машинном языке - есть, по крайней мере, руководство по машинному языку, где хаки компилятора всегда являются племенным знанием. Как вы узнаете, какие биты нужно переписать на машинном языке, - посмотрите снова на профилировщик.