2017-08-23 2 views
1

Au début d'une fonction il y a cette construction:fonction de démarrage de l'Assemblée x86-64

0x7ffff7e47a10: test $0xf,%spl 
0x7ffff7e47a14: je  0x7ffff7e47a1b 
0x7ffff7e47a1a: int3 

Quel est le but du drapeau 0xf dans spl si elle ne fait pas interrompre? Est-ce que quelque chose comme "tout est OK avec la pile"?

Répondre

5

Ceci vérifie si la pile est alignée sur 16 octets et annule le programme si ce n'est pas le cas. Si la pile est alignée sur 16 octets, les quatre bits au moins de %rsp et par extension %spl sont clairs. C'est ce que test $0xf,%spl teste pour.

+0

@Toby Veuillez ne pas "corriger" les erreurs qui ne sont pas des erreurs. S'il vous plaît chercher le mot "ssf" avant de l'éditer à la moins "si". – fuz

+0

Désolé, je pensais que si c'était une construction de code, il serait formaté comme tel (ce n'est pas anglais AFAIK?). Peut-être que vous pourriez clarifier plus dans la réponse, car il y a beaucoup de résultats très différents pour une recherche "go" google. Je prends votre point de vue, mais toute personne qui n'est pas immédiatement familière avec "iff" va également penser qu'il s'agit d'une faute de frappe et ne comprendra donc pas la valeur de celui-ci – Toby

+2

@Toby [iff] (http://en.wiktionary.org/wiki/iff) est un mot anglais parfaitement bien. – fuz