6.48.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-14.2.0/gcc/Size-of-an-asm.html