Выделение памяти на стеке
На процессорах 8086/8088 существовала замечательная возможность— затолкать в стек аргумент-указатель с одновременным выделением памяти всего одной (!) однобайтовой (!) машинной командой PUSH ESP, которая сначала уменьшала значение ESP, а только потом заталкивала его в стек. То есть, в стек попадало уже уменьшенное значение ESP, что способствовало трюкачеству.
Рассмотрим конкретный пример — функцию, одним из аргументов которой является указатель на переменную, принимающую возвращаемый результат: f(int a, word
*x). Предельно компактный вызов (на 8086!) выглядел так:
push sp ; передаем указатель на x
с одновременным выделением памяти под сам x
push si ; передаем переменную a
call f ; зовем функцию