Сборка GCC (AVR): вычесть адрес этикетки - PullRequest
0 голосов
/ 08 августа 2011

Я пытаюсь выполнить:

LABEL:
....
subi r18, LABEL

Мне нужно вычесть адрес метки из регистра. Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 09 августа 2011
subi r16, pm_lo8(LABEL)
sbci r17, pm_hi8(LABEL)

как ответил на avrfreaks:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=857982#857982

справочный документ:
http://sourceware.org/binutils/docs-2.21/as/AVR_002dModifiers.html#AVR_002dModifiers

1 голос
/ 09 августа 2011

Примечание: я не очень знаком с ассемблером AVR, это то, что я могу оценить, прочитав несколько веб-страниц. Я также предполагаю, что ваши адреса 16-битные.

; Address you wish to subtract the label from in R16 (low):R17 (high)

SUBI R16, LOW(LABEL)
SBCI R17, HIGH(LABEL) ; Omit this part if you have < 256 Bytes of ram
...