Der GCC-Assembler liefert mit hi8(status0_adr) die Byteadresse des
Labels. Für meine Zwecke wird jedoch die Programmadresse benötigt.
Versucht habe ich:
1 | .byte pm_hi8(status0_adr)
|
1 | .byte pm(hi8(status0_adr))
|
Beide mit der Fehlermeldung:
junk at end of line, first unrecognized character is `('
Ebenso funktionieren arithmetische Operationen nicht:
1 | .byte hi8(status0_adr / 2)
|
invalid operands (.text and ABS sections) for `/'
Was muss ich tun, um aus einem Label die Programmadresse zu erhalten?
1 | ...
|
2 |
|
3 | status0_adr:
|
4 |
|
5 |
|
6 | RJMP StatusLoop
|
7 |
|
8 | ...
|
9 |
|
10 | .text
|
11 | .align 8
|
12 | atatus:
|
13 | .byte hi8(status0_adr), lo8(status0_adr)
|
14 | .byte hi8(status2_adr), lo8(status2_adr)
|