Spec-Zone.ru › GCC 10

Предыдущий: Переменные в указанных регистрах, Выше: Как использовать встроенный язык ассемблера в коде C [Оглавление][Индекс]

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

Spec-Zone.ru

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