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
La convention de arm64 peut être trouvée dans http://stackoverflow.com/a/29603040/224671. – kennytm