Язык ассемблера AVR - вопрос указателя стека - PullRequest
0 голосов
/ 31 октября 2018

Из инструкции по эксплуатации AVR:

- СТАРТ -

PUSH - Push-регистр в стеке Описание: Эта инструкция сохраняет содержимое регистра Rr в STACK. Указатель стека пост-уменьшается на 1 после PUSH .

Операция: СТЕК ← Rr

Синтаксис: Операнды: Счетчик программ: Стек: PUSH Rr 0 ≤ r ≤ 31 ПК ← ПК + 1 СП ← СП - 1

- КОНЕЦ -

Поправьте меня, если я ошибаюсь. Из моего понимания это переместит все, что находится в регистре Rr, в стек. Итак, теперь, когда стек имеет полномочия (SP ← SP - 1), означает ли это, что он растет вниз?

Также в качестве текущего счетчика программы (до приращения) была указана кнопка Push. Что выполняется, поэтому мы хотим перейти к следующей инструкции, чтобы мы увеличили счетчик программ (ПК ← ПК + 1). Я прав?

Спасибо

1 Ответ

0 голосов
/ 31 октября 2018

Если вы хотите использовать более техническую терминологию, вы можете сказать, что стек составляет пусто по убыванию .
По убыванию означает, что указатель стека уменьшен, пусто означает, что указатель стека указывает на следующую ячейку в стеке (следовательно, пустую ячейку).
Делая стеки растущими вниз, давайте поместим их в дальний конец области данных.
В то время как AVR пусто по убыванию, x86 полностью убывает, а ARM имеет все четыре комбинации, но обычно используется как полное убывание.

Примечание счетчика программы полезно из-за таких инструкций, как cpse (ComPare Skip if Equal) или sbis / sbrc / sbrs, которые увеличивают счетчик программы более чем на 1 (в зависимости от условия).
Все инструкции общего чипа AVR, но call, jmp, eicall, eijmp, icall, ijmp, ret, reti увеличивают счетчик программы (rcall и * 1028) * также добавьте к нему константу, которая может привести к более низкому конечному значению).
Обратите внимание, что хотя слова памяти данных AVR являются 8-битными, слова памяти команд являются 16-битными, а счетчик программ обращается к словам.
Это не является необычным для микроконтроллеров, например, некоторые варианты PIC имеют 14-битные слова инструкций.

...