Überlauf bei Shiftoperationen
-
Hey,
ich bearbeite gerade eine Probeklausur für Rechnerarchitektur und bin dabei über folgende Aufgabe gestolpert. Das ganze ist ARM.
Aufgabenstellung:
Bestimme die N Z C V - Flags für folgende Operationen:mov r0,#-8 ands r0,r0,r0,lsl #2
Ich habe das ganze mal simuliert und es kamen dabei folgende Flags raus:
N:1
Z:0
C:1
V:1Ich bin ein wenig verwirrt, warum beim Überlauf (V) auch eine 1 rauskommt. Den Rest verstehe ich...
Hoffe mir kann einer helfen. Dankeschön
-
weil -8 in hex FFFFFFFFFFFFFFF8 ist und wenn du das nach links schiebst, fallen bits raus.
fall's es nicht stimmt, sorry, ist ein paar jahre her seitdem ich arm assembler schrieb
-
rapso schrieb:
weil -8 in hex FFFFFFFFFFFFFFF8 ist und wenn du das nach links schiebst, fallen bits raus.
fall's es nicht stimmt, sorry, ist ein paar jahre her seitdem ich arm assembler schrieb
<Klugscheißmodus>Wenn Du schon den Taschenrechner verwendest dann denke daran dass das Teil 32b breit ist
</Klugscheißmodus>
Ich bilde mir ein dass der ARM V setzt wenn ein gesetztes b30 in das b31 verschoben wird was hier ja der Fall ist.
-
Weedjo schrieb:
Ich bin ein wenig verwirrt, warum beim Überlauf (V) auch eine 1 rauskommt.
das finde ich auch merkwürdig. vielleicht ist V von einem vorhergehenden befehl gesetzt worden? der shifter verändert eigentlich nur das C flag. schau doch mal hier: http://www.arm.com/miscPDFs/14128.pdf