Spec-Zone.ru › GCC 15

6.11.7 Размер 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-15.3.0/gcc/Size-of-an-asm.html

Spec-Zone.ru

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