Используя язык высокого уровня (Си) нельзя произвольно работать со стеком с помощью ассемблерных вставок, за исключением законченных ассемблерных функций (подпрограмм). То бишь функция должна быть написана на ассемблере по правилам, определяемым конкретным компилятором (с учетом способов передачи аргументов и возврата результата). И если она использует стек, то перед выходом должна вернуть его в исходное (как было до вызова) состояние. В других случаях произвольные ассемблерные вставки работы со стеком чаще всего ведут к нарушению работы всей программы.
|