Значение @ zero_extendqisi2

Nov 18 2020

Мне было интересно, каков фактический смысл @ zero_extendqisi2вывода сборки gcc, а также использование. Я не мог найти, что означает циси или что-нибудь в этом роде.

Для контекста ldrb r3, [fp, #-9] @ zero_extendqisi2это ARM на Raspberry Pi Zero W, скомпилированная с помощью GCC. Например, при перезагрузке файла с unsigned charпреобразованием в int, с отключенной оптимизацией, с GCC9.2 без параметров.https://godbolt.org/z/7xnfqh. Более старый GCC вплоть до самого раннего на Godbolt (4.5) и, предположительно, более раннего, печатает тот же комментарий.

Ответы

1 NateEldredge Nov 19 2020 at 14:22

Это имя инструкции RTL , включенное в список стандартных имен руководства по внутренним компонентам GCCzero_extendmn2 . Вот m,nте режимы машины qi и si, соответственно , которые являются байт и 32-битовое целое число. Таким образом, это указание GCC на то, что он генерирует инструкцию, которая берет байт (здесь загружен из памяти) и расширяет его с помощью нуля до 32-битного целого числа (здесь, в регистре r3). Именно это и ldrbделает инструкция ARM .

Я не знаю, что означает 2, но, по-видимому, это часть соглашения об именах GCC.

Как отмечает Питер, немного странно, что GCC включил такой комментарий в сборку без -fverbose-asm. Действительно комментарий кодируется как часть строки шаблона в файле описания машины, arm.md. Это могло быть средство отладки, которое какой-то разработчик GCC добавил, а затем забыл вынуть.

(Если вы отправляете это для своего задания, пожалуйста, цитируйте это сообщение должным образом.)