Ü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:1

    Ich 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
    🙂


Anmelden zum Antworten