Thumb / ARM ISA - Verständnisfrage

Gast #5731468
Lesenswert?

Hi zusammen,

ich habe vor einiger Zeit angefangen mit AVRs zu spielen und beginne nun 
mich mit ARM zu beschäftigen. Dazu lese ich gerade The Definitive Guide 
to ARM. Ich habe eine Verständnisfrage zur ISA über die ich vielleicht 
auch bei AVR gestolpert wäre wenn ich so tief eingestiegen wäre.
 Es geht um die MOV bzw. MOVS Instruktionen. Ich lese, dass der 
Unterschied darin besteht, das MOVS gleichzeitig die Flags im APSR 
aktualisiert also (N, Z, C) im Wesentlichen. MOV schreibt doch nur den 
Wert eines Register oder ein Literal in einen anderen Register. Wie kann 
dabei eine Änderung im PSR auftreten?

Versteht mich nicht falsch, ich will nicht in erster Linie in ASM 
schreiben. Die ersten Programmierversuche erfolgen in C, aber ich habe 
an dieser Stelle das Gefühl, etwas grundsätzlich nich richtig Verstanden 
zu haben.

Ich hoffe ihr könnt mir hier etwas auf die Sprünge helfen.

Viele Grüße
Hannes
#5731523
Lesenswert?

Bauform B. schrieb:
> Eigentlich sollte fast jeder Befehl (gerade auch load und store) diese
> Flags setzen. Ich fände das total praktisch, weil man auf die Art ein
> if() halb geschenkt bekommt. Andererseits würde Multi-Word-Arithmetik
> etwas mühsamer, man kann nicht alles auf einmal haben.

Auf nicht spekulativen superskalaren Cores wie dem Cortex M7 wird es zur 
Performance-Bremse. Bei solchen Cores ist es sehr nützlich, wenn man 
zwischen einen Befehl und einem dessen Result nutzenden Befehl 
mindestens einen anderen Befehl legen kann, der damit nichts zu tun hat. 
Bei den normalen Registern ist das einfach, bei den Flags hingegen nur, 
wenn nicht alle Befehle sie setzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren