Was bedeutet bx lr tun, in ARM-Assembler?
Ich kann nicht scheinen, um meinen Kopf herum, was bx-lr tut und wie unterscheidet es sich von bl (label). Ich weiß, dass bl (label) speichert die return-Adresse der Funktion in den link anmelden aber ich weiß nicht, was bx-lr tut.
InformationsquelleAutor user2177940 | 2014-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
bx
steht für Zweig-und exchange-Befehlssatz Was bedeutet, dass nach dem lsb (least significant bit) der Adresse verzweigen, den Prozessor zu behandeln, wird die nächste Anweisung als ARM-oder als thumb.Als
lr
in der Regel hält die Rückkehr-Adresse, bedeutet dies, dass dies ist eine Rückgabe von einer Funktion, und wenn das lsb vonlr
1 ist, es zu behandeln, wird der code an dieser Adresse als Daumen, sonst wird es zu behandeln, als ARM.en.wikipedia.org/wiki/ARM_architecture#Thumb
Teil 1: Mode Schalter. Eine ARMv7-CPU arbeitet in einem von zwei Modi (Genannt ARM oder Daumen),, die sich in der Instruktion-Codierung (vor allem in "vollständigen" aber in der großen 4-byte-Anweisungen vs. "beschränkt", aber kleine 2-byte-Anweisungen). Welcher Modus wechseln zum nächsten bestimmt wird, call time mit
bx/blx
nach, ob sich die Adresse, zu der gesprungen ist gerade oder ungerade (dies bewirkt, dass ein Schalter an, bzw, ARM-oder Thumb-Modus).Teil 2: Aufrufe und Rufen Sie Zurück. Auf ARMv7, die Anweisung
bl nameOfFunction
ist, was im Allgemeinen wird verwendet, um eine Unterroutine aufrufen. Diebl
Instruktion speichert in der link-register (lr
) die Adresse der nächsten Anweisung atfer selbst, und der aktuelle Modus, dann springt das Unterprogramm angefordert. Natürlich, wenn das Unterprogramm zurückkehren möchte, er weiß, wo Sie auf zurück, um durch einen Sprung an die Adresse inlr
, und dalr
spart auch der Modus des aufrufenden Funktion wiederhergestellt werden kann als gut. Die Anweisung, übernimmt diese Aufgabe istbx
.Ich denke, es ist besser, wenn du deine Kommentare als Antwort.
InformationsquelleAutor MByD