Je travaille avec le compilateur llvm-clang, en compilant des fonctions C simples pour les assembler sur un processeur ARMv7-A. J'essaie de comprendre ce que cette instruction fait.Opérandes d'instruction ARM SUB
SUB sp, sp, #65, 30
Il est évident que c'est faire de la place sur le pointeur de pile pour certaines variables locales, mais je ne l'ai jamais vu une instruction SUB ARM avec quatre opérandes. Je suppose que le 30 modifie le # 65 en quelque sorte, mais je ne sais pas comment, et je n'ai pas pu trouver de détails dans le Manuel de référence de l'architecture ARM. Aucune suggestion? Pour les curieux, ceci est au début d'un programme qui crée une matrice d'identités 8 x 8 d'entiers, donc je m'attendrais à ce que le sp ait besoin de faire de la place pour au moins 8 x 8 x 4 octets sur la pile .
Merci pour la réponse rapide. Toute idée de pourquoi il y aurait un décalage immédiat plutôt que juste le nombre 260 (l'instruction ARM spécifie que l'immédiat doit être de 12 bits de large, assez clair pour la constante de 260)? – Zeke
@Zeke: La réponse de Martin explique pourquoi –