Соглашение о вызовах из ARM в C, NEON регистрируется для сохранения

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

Спасибо

Из 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):

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

1 ответ

Решение

Из AAPCS, §5.1.2.1:

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