Spec-Zone.ru › GCC 13

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

Spec-Zone.ru

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