2010-08-13 5 views
2

Que signifie lea 0x4(%esp),%ecx au & t assemblage? Qu'est-ce que c'est vraiment 0x4 (% esp)?Assemblage à & t doute

+0

étiquette à-commande est hors de propos ici :) – Bush

Répondre

3

C'est %esp + 0x4.

LEA est l'abréviation de Load Effective Address. C'est, dans ce cas, une simple addition, comme indiqué ci-dessus. Généralement, les gens et les compilateurs ne l'utilisent plus car les processeurs sont désormais livrés avec une unité génératrice d'adresse (autrement appelée AGU), qui vous permet d'utiliser toutes sortes d'arithmétiques sophistiquées pour calculer des adresses à partir de registres et de valeurs. En bref, tout ce que vous avez fait avec lea, vous pouvez maintenant l'intégrer dans n'importe quelle autre instruction.

+0

Euh, 'instructions lea' sont un peu moins de 10 % d'instructions _all_ générées pour le code sur lequel je travaille actuellement. Il est peut-être vrai que sur x86 vous pouvez intégrer n'importe quelle opération 'lea' dans une opération de chargement ou de stockage (j'en doute assez, honnêtement), mais le code est encore plein d'arithmétique de pointeur qui n'implique pas nécessairement une charge ou un magasin. – zwol

1
lea ecx,[esp+4] 
+2

Je ne suis pas la personne qui vous a downvoted, mais, hum, vous connaissez la blague sur le pilote d'hélicoptère et le support technique de Microsoft? – zwol

+0

Je fais maintenant. J'ai supposé que la question était de déchiffrer la syntaxe ** at & t **. –

+0

Maintenant, j'ai besoin de google cette blague :) – jyz

1

esp est le pointeur de pile. 0x4 est le décalage. AT & La syntaxe T a le command source, destination et la commande ici est LEA qui est "Load Effective Address".

Nous racontons la CPU pour charger l'adresse « pointeur de pile + 4 » dans le registre « ECX »