Was bedeutet „-0x1 (% edx,% ECX, 1)“ bedeutet in objdump Ausgang?
Frage
Unter Verwendung eines binären zu verstehen objdump und ich weiß, ich bin nicht fließend genug in ASM Syntax. Was bedeutet die folgende Vorstellung?
xor %al,-0x1(%edx,%ecx,1)
Und während Sie gerade dabei sind - was soll ich für suchen, um Dokumente über solche Begriffe zu finden
Lösung
Die Klammern sind Speicher-Offsets:
-0x1(%edx,%ecx,1)
(AT & T-Syntax) gleich [edx+ecx*1-1]
(Intel-Syntax)
Kurzanleitung für den AT & T Montage Syntax (wie pro Ihre Anfrage).
Andere Tipps
Dies ist eine ausschließliche oder mit Inhalt des Low-Bytes (% Al) der ‚a‘ registrieren, und der Inhalt des Speichers an der Adresse, die die Summe der ‚d‘ breite Register 32 Bit (% EDX) , 'c' mit 1 multipliziert (% ECX, 1) und -1. Das Ergebnis wird zurückgeschrieben% al. In C
al ^= (char*)(edx+ecx*1 - 1);
Sie können Sachen wie dieser Nachschlag bei sandpile oder in der Intel / AMD-Dokumentation.