Spec-Zone.ru › GCC 7

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API