Dekodierung der Assembly-Ausgabe im C-Programm

8

Ich schreibe ein Programm, um 2 Variablen mit XOR zu tauschen.

%Vor%

I Kompiliere es, um die Assemblyausgabe zusammen mit anderen zu erhalten

%Vor%

I Erhalte diese Ausgabe im Assembly-Formular ...

%Vor%

Ich bin nicht mit der x86-Assembly vertraut, aber ich habe an der ARM-Assembly gearbeitet. Was bedeuten hier die Zahlen 24 und 28 ?

%Vor%     
ArunMKumar 07.05.2013, 19:05
quelle

4 Antworten

9

%esp ist der Stapelzeiger. 24(%esp) liest den Wert in der Adresse %esp + 24.

    
ouah 07.05.2013, 19:06
quelle
4

Ich kann deine Verwirrung leicht sehen. Jemand korrigiert mich, aber das ist AT & amp; T-Syntax, denke ich, und genau, wie oder wo sie alle "%" - Zeichen und benutzte Klammern setzen, na ja, Compiler-Autoren können tun, was sie wollen. (Wenn Sie nicht mögen, was sie getan haben, schreiben Sie Ihren eigenen Compiler; und tun Sie es kostenlos und so weiter.)

Ich habe das in Intel-Syntax für Sie neu geschrieben. Ich vergesse genau, wie sie es nennen, aber in der Syntax steht das Ziel in der Anweisung an erster Stelle, und die anderen Teile folgen ihm. Klammern um einen Registernamen bedeuten "Die Sachen, die Sie an der Adresse finden, auf die dieses Register zeigt" Bei vielen Registern können Sie einen eigenen Offset hinzufügen, und der Chip generiert die Adresse mit dem hinzugefügten Offset.

Vorbehalt, ich denke, das ist richtig, aber ich sollte jetzt wirklich zu Hause schlafen.

Wie auch immer, sehen Sie, ob das hilft

%Vor%

So viel dazu. Nur für den Fall, dass Sie in einem Assessment-Sprachkurs konfrontiert werden, hat dieses Problem die Menschen (einschließlich mir) seit Jahren fasziniert. Hiernach suchen Ihre Professoren wahrscheinlich. Übrigens, Sie können dies im Internet finden, in der Tat, Wikipedia.

Die vorherigen 11 Anweisungen können auf 3 Anweisungen reduziert werden

%Vor%

Endlich, Hardware-Designer und Mikroprozessoren zur Rettung ...

%Vor%     
User.1 08.05.2013 00:36
quelle
3

Ich empfehle, die Programmiergrundsätze (x86-Assembly, GAS-Syntax) zu lesen

Ссылка

kannst du das auch ausprobieren

%Vor%

, um stattdessen die Intel-Syntax anzuzeigen

    
hit 07.05.2013 20:11
quelle
2

Das sind Offsets, Sie müssen den Wert von esp hinzufügen, um die tatsächliche Adresse zu erhalten

    
BlackBear 07.05.2013 19:07
quelle

Tags und Links