Где соглашение о регистрации ARM? - PullRequest
0 голосов
/ 03 июля 2018

Согласно документации ARMv7, R0-R12 являются регистрами общего назначения, а R13, R14 и R15 являются SP, LR и PC. Я видел в некоторых вопросах на форуме ARM, StackOverflow или других сайтах, что R11 часто используется в качестве указателя фрейма ( форум ARM , pp , StackOverflow , Microsoft ), однако я не могу найти никакой официальной документации от ARM или GCC, заявляющей об использовании этого реестра. Некоторые люди также сказали, что это было в AAPCS , однако единственная информация, доступная в этом документе о R11, - то, что это переменный регистр.

Если бы кто-нибудь мог помочь найти официальный документ с указанием использования этих регистров, включая R11 в качестве указателя кадра, я был бы очень благодарен.

1 Ответ

0 голосов
/ 03 июля 2018

Я думаю, вы ищете ABI , двоичный интерфейс приложения.

Это собрание документов. На базовом уровне R11 действительно объявлен как «Переменный-регистр 8.».

Само по себе это не очень ограничительное определение. Реализации могут присваивать в основном любую переменную, будь то видимая программисту переменная или какая-то внутренняя вспомогательная переменная для какой-либо конкретной языковой функции, которая им нужна. Переменная Frame Pointer является полезной переменной в некоторых языках, но не во всех, и было бы стыдно жертвовать 8-м регистром переменных в реализациях, которые не требуют Frame Pointer.

Таким образом, ARM не имеет смысла делать официальное заявление о том, как R11 должен использоваться в качестве указателя кадра, а GCC не может делать официальные заявления от имени ARM.

...