Конвенция за повикване от ARM към C, NEON се регистрира за запазване

Има подобна публикация, която обхваща обикновените регистри. Ами регистрите 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) не е необходимо да се запазват

person Pavel P    schedule 13.03.2011    source източник
comment
Какво ще кажете за FPSCR и FPEXC?   -  person Sven    schedule 13.10.2018
comment
Дори не съм сигурен за тези. Например 5.1.2.1 VFP register usage conventions (VFP v2, v3 and the Advanced SIMD Extension) обхваща FPSCR, но не е ясно дали трябва да направите нещо, за да го запазите или не.   -  person Pavel P    schedule 18.10.2018


Отговори (1)


От AAPCS, §5.1.2.1:

  • s16–s31 (d8–d15, q4–q7) трябва да се запази
  • s0–s15 (d0–d7, q0–q3) и d16–d31 (q8–q15) не е необходимо да се запазват
person kennytm    schedule 13.03.2011