6.47.6 Размер asm-кода
Некоторые целевые платформы требуют, чтобы GCC отслеживал размер каждой инструкции, используемой для генерации корректного кода. Поскольку окончательная длина кода, сгенерированного оператором asm, известна только ассемблеру, GCC должен сделать оценку его размера. Это делается подсчетом числа инструкций в шаблоне asm и умножением этого числа на длину самой длинной инструкции, поддерживаемой процессором. (При подсчете числа инструкций предполагается, что любая встречающаяся новая строка или любой разделитель инструкций, поддерживаемый ассемблером — обычно ‘;’ — указывает на конец инструкции.)
Обычно оценка GCC достаточна для генерации корректного кода, но компилятор может быть сбит с толку, если вы используете псевдоинструкции или макросы ассемблера, которые расширяются в несколько реальных инструкций, или если вы используете директивы ассемблера, которые расширяются до большего места в объектном файле, чем нужно для одной инструкции. Если это произойдет, ассемблер может выдать диагностическое сообщение о том, что метка недостижима.
Этот размер также используется для решений по встраиванию. Если вы используете asm inline вместо просто asm, то для целей встраивания размер asm принимается как минимальный размер, игнорируя количество инструкций, которые GCC считает таковыми.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Size-of-an-asm.html