Соглашение о вызовах ARM to C, NEON регистрируется для сохранения - PullRequest
14 голосов
/ 13 марта 2011

Существует аналогичный пост , который охватывает обычные регистры. Как насчет НЕОН регистров. Насколько я помню, либо верхняя, либо нижняя половина регистров должны сохраняться при вызовах функций. Я нигде не могу найти эту информацию, кто-нибудь может это уточнить?

спасибо

С AAPCS, §5.1.1 Регистры ядра :

  • r0-r3 - регистры аргумента и нуля; r0-r1 также являются регистрами результата
  • r4-r8 - регистры сохранения вызовов
  • r9 может быть регистром сохранения вызываемого абонента или нет (в некоторых вариантах AAPCS это специальный регистр)
  • r10-r11 - регистры сохранения вызовов
  • r12-r15 - специальные регистры

С AAPCS, §5.1.2.1 Соглашения об использовании регистра VFP (VFP v2, v3 и Advanced SIMD Extension) :

  • с16 – с31 (d8 – d15, q4 – q7) должно быть сохранено
  • s0 – s15 (d0 – d7, q0 – q3) и d16 – d31 (q8 – q15) не требуется сохранять

1 Ответ

13 голосов
/ 13 марта 2011

С AAPCS, §5.1.2.1 :

  • s16 – s31 (d8 – d15, q4 – q7) должны быть сохранены
  • s0 – s15 (d0 – d7, q0 – q3) и d16 – d31 (q8 – q15) не требуется сохранять
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...