BL-Anweisung ARM - Wie funktioniert es

Ich bin Lern-ARM-Assembly, und ich bin stuck on something right now.

Weiß ich über den Link Registrieren, der, wenn ich bin nicht falsch, enthält die Adresse zurück, wenn ein Funktionsaufruf abgeschlossen ist.

Also wenn wir sowas haben (aus der ARM-Dokumentation):

0 | here
1 |   B there
2 |   
3 |   CMP R1, #0
4 |   BEQ anotherfunc
5 |
6 |   BL sub+rom ;  Call subroutine at computed address.

So, wenn wir denken, der die Spalte auf der linken Seite, wie die Adresse der Anweisung, dann nach B gibt es auf Adresse 1, werden die Link-Register enthält den Wert 1 richtig?

Dann geht das Programm zu der Methode gibt und dann verwendet Sie den Wert der Link-Register zu wissen, wo, um zurückzukehren.

Wenn wir Sie überspringen, um die Adresse 6 jetzt, wo ich bin stecken, wir wissen, was BL kopiert die Adresse der nächsten Anweisung in lr (r14, der link-register).

So, jetzt würde es kopieren Sie die Adresse der sub, die einem Unterprogramm (was ist ein Unterprogramm??) + rom (was ist eine Zahl?) oder die Adresse von sub+rom (ich weiß nicht, was dies sein könnte).

Aber im Allgemeinen, wenn müssten wir BL? Warum wollen wir es im Beispiel oben? Kann mir jemand ein Beispiel wo wir es wirklich brauchen?

Dank!

  • "Wann müssten wir BL?" Wenn Sie eine Funktion schreiben, die aufgerufen werden können, die aus mehr als einem Ort wird es brauchen, um zu wissen, wo es zurückgeben sollte, das ist, was das link-register wird verwendet für. Und der link registrieren, um die richtige Adresse, um zu Ihnen zurückzukehren verwenden Sie die BL Unterricht.
InformationsquelleAutor pavlos163 | 2015-12-04
Schreibe einen Kommentar