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