реклама
Бургер менюБургер меню

Андрей Ипполитов – Ассемблер ARM64 (страница 8)

18

Общие регистры общего назначения (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.