В коде сборки ARM64, когда регистр 31 XZR против SP? - PullRequest
4 голосов
/ 01 мая 2020

В коде сборки ARM64, когда номер регистра 31 означает XZR и когда он означает SP?

1 Ответ

5 голосов
/ 02 мая 2020

Будет ли инструкция интерпретировать регистр 31 как нулевой регистр wzr / xzr или указатель стека wsp / xsp, зависит от типа инструкции и не может быть легко предсказуемо. Один и тот же мнемон c может ссылаться на несколько инструкций, некоторые из которых принимают указатель стека в качестве операнда, а другие - нет. Однако в целом все инструкции, которые имеют смысл использовать с указателем стека, имеют форму, в которой они могут использоваться с указателем стека. Ассемблер автоматически подберет для вас подходящую форму. sp никогда не будет молча принимать значение *1005* или наоборот.

В Справочном руководстве ARM Xn или Wn используется для обозначения регистра, где регистр 31 ссылается на ноль регистр. Xn|SP или Wn|WSP используется для ссылки на регистр, где регистр 31 ссылается на указатель стека. Подробности см. Во введении к §5 «НАСТРОЙКА ИНСТРУКЦИИ A64».

...