Кто-то любит пирожки, а кто-то - нет.
В контроллере ARM есть физическая поддержка стека (имеется специальный регистр SP – Stack Pointer), хотя и нет каких-то особых команд для работы с ним – всё выполняется за счёт команд работы с памятью.
Многое из сказанного далее верно и для других систем (с оговорками, конечно).
Например, есть такие интересные команды STMDB (Store Multiple Decrement Before) и LDMIA (Load Multiple Increment After), которые умеют запихивать в память (доставать из памяти) сразу по куче регистров, изменяя указатель после записи каждого регистра.
Думаю, понятно, что первую команду можно использовать как операцию PUSH в x86-процессорах. Там она помещает содержимое одного указанного регистра в стек и изменяет указатель на вершину стека. Вторую – как POP, которая действует ровно наоборот – изменяет адрес вершины стека и записывает содержимое памяти по этому указателю в заданный регистр.

блаблабла...

@темы: arm, программизмы