[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Вопрос для знающих ADSP218x.
Допустим, в главной части подпрограммы у меня крутится процедура, в которой, например, 3 вложенных цикла:
CNTR=1000;
DO myloop1 UNTIL CE;
CNTR=1000;
DO myloop2 UNTIL CE;
CNTR=1000;
DO myloop3 UNTIL CE;
.....................
myloop3: nop;
myloop2: nop;
myloop1: nop;
Где-то во время выполнения третьего, самого вложенного цикла возникает прерывание, в котором также имеются несколько вложенных циклов.
sport1_rx:
CNTR=1000;
DO sport1_rx_myloop1 UNTIL CE;
CNTR=1000;
DO sport1_rx_myloop2 UNTIL CE;
CNTR=1000;
DO sport1_rx_myloop3 UNTIL CE;
.....................
sport1_rx_myloop3: nop;
sport1_rx_myloop2: nop;
sport1_rx_myloop1: nop;
rti;
Теперь, собственно, сам вопрос: в документации сказано, что в стеке возможно хранить только 4 значения цикла (count stack), то есть, допускается не более четырех уровней вложенности. Как видно из приведенного алгоритма, при возникновении прерывания стек уже заполнен тремя значениями. А в обработчике прерывания еще требуется три. Каким образом такая ситуация обрабатывается процессором, и насколько она корректна? Может знающие люди посоветуют чего-нибудь? Или ссылку дадут? Или вспомнят свой случай? Буду весьма признателен.
Благодарю за внимание.
E-mail: info@telesys.ru