Oft finden sich in Registern irgendwelche Werte, die man evtl. für weitere Berechungen noch benötigt, trotzdem möchte man erstmal mit diesem belegten Register vorher noch was anderes rechnen/machen.
Bei manchen CPUs kann das sogar notwendig sein, weil man nur ein einziges echtes Rechenregister zur Verfügung hat (6502). Bei anderen gibt es zwar evtl. genug Register, aber man benutzt aus irgendwelchen Konventionen oder Zwängen (Subroutine gibt ein Ergebnis in einem bestimmten Register an den Aufrufer zurück) heraus immer die gleichen Register.
In so einem Fall könnte man den aktuellen Inhalt einfach im Speicher irgendwo ablegen und später wieder dort herausholen.
Es gibt aber evtl. auch eine einfachere Lösung:
Man transferiert den Inhalt in ein anderes, gerade freies, nicht genutztes Register.
Nun ist das auf einer CPU mit 3 Registern relativ sinnfrei, könnte man denken, aber auch da wird es oft gemacht, etwa weil bestimmte Operationen nur mit einem von den 3 Registern ausführbar sind. Richtig spannend wird soetwas natürlich, wenn viele Register vorhanden sind, da man dann auch bei aufwendigen Berechnungen eigentlich alle Zwischenergebnisse direkt in der CPU behalten kann.
Der große Vorteil liegt dabei v.a. in der Geschwindigkeit - ein Register in ein anderes Register zu übergeben kann eine CPU recht fix erledigen, das gleiche Register im RAM zu speichern dauert vergleichweise LAAAAANGE !
Bei den ARMs gibt es dafür den wahrscheinlich einleuchtendsten Befehl: MOV R1 R2 , also R1=R2
oder auch MOV R1,R14 oder MOV R14,R1 usf.
Beim 6502 beginnt diese Befehlsgruppe immer mit "T" für Transfer und dann folgt, was man wohin schreibt.
Dort haben die Transferbefehle auch noch die besondere Bewandtnis, daß man nur den Akku bequem (!) auf dem Stapelspeicher ablegen kann, weil es für diesen einen netten Schreib- und Lesebefehl für diesen Stack gibt. Deshalb schreibt man dann erst den Akku, weg, transferiert anschließend das X-Register XR in den Akku, schreibt wieder den Akku weg, transferiert auch noch YR in den Akku, und schreibt nochmal den Akku weg; womit man dann alle drei Register "gerettet" hätte.
Kurz: Transferbefehle sind schnell ! Können richtig benutzt ein prima Tool sein !
(Sie machen allerdings, von solchen Standards wie der Sache mit dem "Register retten" abgesehen, manchmal den Quellcode etwas unübersichtlich, weil ständig was getauscht wird.)