Betrachten sie das folgende Codebeispiel. Wie sie sehen können, ist es nicht nur möglich den Kontrollfluss über Sprünge zu verändern, der Programmcounter lässt sich auch direkt manipulieren.
.global start
.section .text
start:
some_func:
mov r2, #7
sub r0, pc, #12
loop:
ldr r1, [r0]
str r1, [r0, #28]
add r0, r0, #4
subs r2, r2, #1
subne pc, pc, #24
.space 20000
Um das Verhalten des Codes während der Ausführung zu analysieren, ist es notwendig im Fenster Settings
alle Häkchen bei Debugging Checks
zu entfernen.
zurück | Hauptmenü | weiter |
3.1 Kontrollflussinstruktionen |
---|
3.1.1 Intro |
3.1.2 Unbedingte Sprünge |
3.1.3 Bedingte Sprünge |
3.1.4 Manipulation des Programmcounters (Übungsaufgabe) |