2011-01-14 29 views
1

Ich bin neu in der Montage, und es ist ziemlich lustig. Sowieso Ich habe eine Frage ...eine einfache Montage Frage

cmpw cr7, %r29, %r8 

Ist dieser Code entspricht if cr7 > %r29 and %r8?

+1

Es wird wahrscheinlich anderen helfen, Ihre Architektur zu geben. – ktm5124

+0

Sieht aus wie PowerPC –

+0

ja, das ist PPC – Mark

Antwort

1

Es vergleicht r29 mit r8 und platziert das Ergebnis in cr7 ich glaube.

Mit anderen Worten:

cr7 = r29 - r8

Nachdem einige PPC docs lesen, es sieht aus wie cr (das Vergleichsregister), bekommt einen codierten Wert, was weniger, größer, gleich.

less: 0x100 
greater: 0x010 
equal: 0x001 

In anderen Architekturen wie x86, gibt es keine CR per se, sondern eine Gruppe von Fahnen, wie ZF, SF und CF (Null, Zeichen und tragen Fahnen). Diese werden immer während arithmetischer Operationen wie Subtraktion gesetzt. Daher ist ein Vergleich im Prinzip der gleiche wie ein Subtrahieren.

+0

Danke, das macht Sinn. Aber warum die Subtraktion? – Mark

+1

Vergleich ist wirklich nur eine Subtraktion. Wenn Sie A und B vergleichen, ist A kleiner als B, wenn A-B negativ ist. Es ist mehr als B, wenn A-B positiv ist, und sie sind gleich, wenn A-B == 0 ist. Ich bin jedoch nicht 100% sicher, dass PPC das subtrahierte Ergebnis speichert. Ich habe eine Dokumentation gefunden, die besagt, dass das cr Werte von 4, 2 und 1 für weniger, größer, gleich erhält. –

+0

Ah, okay. Hier ist der vollständige Code: cmpw cr7,% r29,% r8 beq cr7, loc_152A13 – Mark