Аппаратный стек

Стек поддерживает до 8 уровней вложенности подпрограмм пользователя, включая обработку прерываний. В стеке сохраняется адрес возврата в основную программу.

В микроконтроллерах среднего семейства реализован 8-уровневый 13-разрядный аппаратный стек. Стек не имеет отображения на память программ и память данных, нельзя записать или прочитать данные из стека. Значение счетчика команд заносится в вершину стека при выполнении инструкций перехода на подпрограмму (CALL) или обработку прерываний. Чтение из стека и запись в счетчик команд (PC), происходит при выполнении инструкций возврата из подпрограммы или обработки прерываний (RETURN, RETLW, RETFIE), при этом значение регистра PCLATH не изменяется.

После 8 записей в стек, девятая запись запишется на место первой, десятая поверх второй и т.д. Другими словами, при полной заполненности стека, последующие записи в стек идут «поверх» уже имеющихся.

Важно:

1) В микроконтроллерах не имеется никаких указателей о переполнении стека.

2) В микроконтроллерах не предусмотрено команд записи/чтения из стека, кроме команд вызова/возврата из подпрограммы (CALL, RETURN, RETLW, RETFIE) или условий перехода по вектору прерываний.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: