[UNИX] HSE - ArchitectureASM - 05 - Stack and subroutines

preview_player
Показать описание
27.11.2019
Lecture by George Kouryachy
---
Рекомендации по теме
Комментарии
Автор

42:24, на счет аппаратного стека могу привести пример ATtiny11. Там сделали 3-уровневый аппаратный стек чтобы обойтись вообще без оперативки. В результате программисту дается 32 регистра по 8 бит каждый и до 3 вложенных подпрограмм.

COKPOWEHEU
Автор

56:10 "сначала уменьшаем sp, потом записываем данные на стек". Совсем недавно разбирался с микроконтроллером на RISCV (во многом похож на MIPS), читал чей-то код. В частности логику обработки прерываний. Автор увеличивал sp и сохранял туда нужные регистры. То есть использовал юзерский стек (для контроллеров это как раз нормально, тем более для прерываний). Похоже, ему удалось обработать прерывание вообще без дополнительных регистров - уменьшил sp на 20 слов и через sw поочередно положил туда все регистры.
Если бы в основном коде работа с подпрограммами проходила иначе, чем описывается в данном видео, то есть сначала записать в 0(sp), -4(sp), -8(sp) и т.д. а только потом шло уменьшение sp, такой алгоритм попортил бы данные на стеке.
Ну или еще проще говоря - сначала резервируем память, только потом используем.

COKPOWEHEU