2010-08-08 24 views
2

Comment puis-je préfixer un SS: ou ES: en utilisant AT & T Syntaxe Assemblée sans ajouter dans un .byte 0x36 ou .byte 0x26?Comment puis-je préfixer un `SS:` `ou ES:` l'aide d'AT & T Assemblée Syntaxe

ie. Comment pourrais-je être en mesure de convertir mov dword ptr ss:[esp+0x10], offset foo de la syntaxe Intel AT & T sans utiliser:

.byte 0x36 
movl $foo, 0x10(%esp) 

J'ai essayé movl $foo, %ss:0x10(%esp) qui assemble sans avertissement mais, en regardant à travers le binaire, ne fonctionne toujours pas ajouter à SS:

Répondre

3

IIRC, le préfixe SS: n'est pas requis lorsqu'il est utilisé avec les registres ESP et EBP, car pour ceux-ci, il s'agit déjà de la valeur par défaut.

C'est peut-être la raison pour laquelle l'assembleur l'omet simplement pour économiser de l'espace; par conséquent, le besoin d'émettre manuellement le préfixe SS: sous la forme d'un octet 0x36, car l'assembleur ne modifiera pas les octets bruts.

+0

Oh, je ne le savais pas! L'assembleur MSVC semble l'ajouter cependant ... Mais est 'movl $ foo,% ss: 0x10 (% esp)' la bonne façon de l'ajouter? –

+0

D'accord, juste vérifié, et il est –