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