Цитата(Сергей Борщ @ Jan 2 2012, 10:56)

Упоминанаие стека данных и стека возврата наталкивает на мысль, что речь идет о порте для AVR под IAR. IAR использует регистровую пару Y как указатель вершины программного стека для данных. Y состоит из регистров R28:R29, которые отражены на адресное пространство ОЗУ по адресам 28 и 29.
Поскольку реализация ассемблерных вставок в IAR не позволяет связать регистры и имена C(С++)-переменных, такая реализация доступа - наиболее простая и эффективная в данном случае.
Спасибо, понятно.
Ларчик просто окрывался...
Ещё такой вопрос: я правильно понял, что функции GetDataSP/SetDataSP используются только при переключении стеков прерываний (TISRW_SS)?
И в какой код компилируются эти функции?
SetDataSP это:
Код
STS 0x001C,R16 Store direct to data space
STS 0x001D,R17 Store direct to data space
RET
GetDataSP
Код
LDS R16,0x001C Load direct from data space
LDS R17,0x001D Load direct from data space
Можно ли изменить эти функции так:
GetDataSP
Код
MOV R16,R28
MOV R17,R29
SetDataSP
Код
MOV R28,R16
MOV R29,R17
RET