Reverse-Engineering-Assemblercode für c-Code

8

Ich denke, das ist eigentlich ein ziemlich einfaches Problem. Ich muss diesen Assembler-Code zu c-Code zurückentwickeln. Ich gebe auch, was ich denke, so dass Sie hoffentlich zeigen können, wo ich falsch gelaufen bin und ich kann jetzt aus meinen Fehlern lernen.

%Vor%

Also das ist, was ich denke, geht damit weiter: die ersten beiden Zeilen nach .LFBO:

%Vor%

richten nur den Stapel für die Ausführung ein, die gerade folgen soll.

%Vor%

greift auf die erste Variable zu, nennen Sie sie x

%Vor%

greift auf die zweite Variable zu, rufen Sie y

auf %Vor%

ist das Entnehmen von x in der nächsten Zeile

%Vor%

vergleicht die Variablen x und y durch Berechnung von x-y

%Vor%

sagt Springe zu .L2 wenn x & gt; y

Wenn x & lt; = y, dann berechne die nächsten Zeilen, ohne zu .L2

zu springen %Vor%

kopiere x = y

%Vor%

Springe zu .L3

wenn x & gt; y an der jg-Linie springe dann zu .L2: und vervollständige diese Zeile

%Vor%

Hier wurde mir klar, dass ich wirklich verwirrt war. Es sieht für mich aus, dass du x nach x kopierst dann ist .L3 abgeschlossen und ich glaube, dass x zurückgegeben wird

    
scottybobby 12.02.2015, 23:51
quelle

3 Antworten

9

Überlege es nicht. Ersetzen Sie die Baugruppe nach und nach durch C. Hier ist eine mögliche Abfolge von Transformationen.

%Vor%

Sie können diese Strategie auf jedes Montageelement anwenden. Hier nahm ich mir die Zeit, um die verschiedenen Transformationen zu beschreiben. Mit Übung können Sie viel schneller zum Endergebnis kommen.

    
Antoine Mathys 14.02.2015, 21:39
quelle
2
%Vor%

Dies ist, was ich denke, dass wir uns entschlossen haben, mit Hilfe der Jungs in den Kommentaren richtig zu sein.

    
scottybobby 13.02.2015 00:43
quelle
0
%Vor%

Testen der Hypothese

%Vor%

Zerlegung des Ergebnisses

%Vor%     
blabb 04.04.2015 12:03
quelle