Внутри ГАЗ .macro
, вы используете \foo
для ссылки на параметр макроса, называемый foo
.
.macro
, на который вы смотрите, имеет 3 аргументасо значениями по умолчанию;предположительно в некоторых случаях они хотят получить альтернативные значения, сохраненные вместо того, что есть в RAX и RDX.Но остальные регистры сохраняются и обнуляются как обычно.
Так что после расширения макроса, да, это просто push %rdx
и push %rax
, так же, как push %r11
и push %r12
.
IDK, если вы просматривали старую версию Linux, но она находится в .h
, который включен в другие .S
рукописные исходные файлы asm, не от .c
источников.Я исправил ваш вопрос к вам.
Я думал, что комментарий к определению макроса GAS был довольно ясным о назначении этого макроса.Смотрите ссылку на github, которую я добавил к вашему вопросу.