Error: branch out of range

OP #7062571
Lesenswert?
• ▲
▼
Was mache ich bei diesem kleinen Assemblerprogramm falsch?
1
        .syntax unified
2
        .cpu    cortex-m4
3
        .fpu    fpv4-sp-d16
4
        .thumb
5
        .text
6
        .pool
7
        .global search,put
8
        .org 0x400
9

10
@@@@@@@@@@@@@@@@@@@@@@@@@
11
@ search list of WORDs in memory (2bytes), .asciz ... , .align 2
12
@        .word 0x1234 ; .asciz "apfel"  ; .align 2
13
@        .word 0x2345 ; .asciz "birne"  ; .align 2
14
@        .word 0xaaaa ; .asciz "banane" ; .align 2
15
@        .word 0
16
search: push {r0-r5,lr}
17
        ldr r4,= dict
18
1:      ldrh r1,[r4]   @ test next token word
19
        cbz r0,5f      @ not_found
20
        cmp r0,r1
21
        bne 3f
22
        mov r0,r4
23
        add r0,#2
24
        bl puts
25
        b 5f
26
2:      add r4,#2     @ advance word pointer to point to asciz
27
3:      ldrb r1,[r4],#1
28
        cbnz  r1,3b    @ skip until 0 >> diese Zeile macht den 28: Error: branch out of range
29
        mov r3,r4
30
        and r3,#1     @ is r4 odd?
31
        cbz r3,4f     @ r3/4 is even on branch
32
        add r4,#1
33
4:      b 1b
34
5:
35
        pop {r0-r5,pc}
36

37
        .pool
38
        .align 4
39
dict:   .hword 0x1234; .byte 'h','e','l','l',0 ; .align 2
40
        .hword 0x2345;  .byte 'w','o','r','l','d',0 ; .align 2
41
        .hword 0
42
        .end

Es gibt in Zeile 28 den Assemblerfehler Error: branch out of range.
Aber ich springe doch lediglich zu im Kontext nahen temporären Labels?
(Programmierfehler seien jetzt mal nicht betrachtet, habe das 
Progrämmchen noch nicht durchgetestet. Aber der Fehler hindert mich im 
Moment daran)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.