Цитата
идёт речь об адресах, которые могут храниться как во флэше так и в озу... адреса переходов,
Не всем так , нет там адресов переходов ни во FLASH ни в SRAM . Вы можете использовать SRAM по прямому назначению . но это никак не повлияет на адресацию. Все адреса переходов вычисляются на стадии компиляции программы , а использование команды ret вообще для любого диза - просто ret / А вот то , что с этой точки можно уйти в любую сторону кода без последствий , я думаю что он тоже не просечёт. Отслеживать стек , я думаю дизы ещё не научились.
Собственно , особо нового ничего и нет. Многим известен такой подход
Код
ldwi Z,METKA
push ZL
push ZH
----------
MAIN:
Какой -то код
-----------
ret
Какой -то код
-----------
METKA:
push ZL
push ZH
----------
MAIN:
Какой -то код
-----------
ret
Какой -то код
-----------
METKA:
Это всё в области FLASH , и метка существует в явном виде иначе компилятор ее не вычислит.
но если
Код
.dseg
METKA:
то адрес метки возьмётся по адресу SRAMMETKA:
Если METKA = 0x100 , то программа удёт на адрес 0x100 , если добавить .byte 8 - то на удёт на 0x108, при этом в самой программе меток нет вообще
Код
0x107 ldi count,30
0x108 dec count
0x109 add temp,count
0x110 sts METKA, temp ну и т.д.
этот код для примера т.е просто набор пришедших в голову команд
0x108 dec count
0x109 add temp,count
0x110 sts METKA, temp ну и т.д.