2011-03-13 4 views
14

Il existe un similar post qui couvre les registres réguliers. Qu'en est-il des registres NEON. Autant que je me souvienne, la moitié supérieure ou la moitié inférieure des registres doivent être préservées à travers les appels de fonction. Je ne trouve pas cette information nulle part, quelqu'un peut-il clarifier cela?Convention d'appel ARM vers C, NEON enregistre pour enregistrer

grâce

De the AAPCS, §5.1.1 Core registers:

  • r0-r3 sont les registres d'arguments et gratter; r0-r1 sont également le résultat enregistre
  • r4-r8 sont registres callee-save
  • r9 pourrait être un callee-sauvegarde de registre ou non (sur certaines variantes de VAMP est un registre spécial)
  • r10-r11 sont des registres callee-save
  • r12-r15 sont des registres spéciaux

De the AAPCS, §5.1.2.1 VFP register usage conventions (VFP v2, v3 and the Advanced SIMD Extension):

  • s16-s31 (d8-d15, Q4-Q7) doit être préservée
  • s0-s15 (d0-d7, q0-q3) et d16-d31 (Q8-q15) n'a pas besoin d'être conservés

Répondre

13

de the AAPCS, §5.1.2.1:

  • S16-S31 (d8-D15, q4-q7) doit être préservée
  • s0-S15 (D0-D7, q0-q3) et D16-D31 (Q8-q15) ne ont pas besoin à conserver
+1

La convention de arm64 peut être trouvée dans http://stackoverflow.com/a/29603040/224671. – kennytm