Андрей Ипполитов – Ассемблер ARM64 (страница 8)
Общие регистры общего назначения (X0–X30)
•
X0–X30
– 31 регистр общего назначения по 64 бита.
•
X0–X7
– используются для передачи аргументов и возвращаемых значений по вызовам (первый аргумент в
X
0 и т.д.; до
X
7).
•
X8
–
временный
/внутренний регистр (indirect result location / intra-procedure-call scratch).
•
X9–X15
– временные (
scratch
) регистры.
•
X16–X17
–
IP
0,
IP
1 – плейсхолдеры для промежуточных значений/внутренних вызовов (
intra
–
procedure
–
call
scratch
). Часто используются как регистры для вызовов в связке с межпроцедурными вызовами.
•
X18
–
platform
register
(может быть зарезервирован ОС/платформой). На
Linux
обычно свободен для использования как
General
Purpose
в пользовательском коде, но системные соглашения могут отличаться.
•
X19–X28
– калл‑сейв регистры
(callee-saved):
вызываемая функция обязана сохранять/восстанавливать их, если использует.
•
X29
–
Frame Pointer (FP)
по соглашению
(
если используется опорный кадр
).
•
X30
–
Link Register (LR)
– содержит адрес возврата при вызове
BL/BLR.