История изменений
Исправление www_linux_org_ru, (текущая версия) :
Твой вариант зачем-то оставляет дыры в массиве soft_stack. Вот это надо исправить.
это сделано *специально*, чтобы смоделировать железный стек
пример: у нас есть функция:
int f(int x, int y, int z)
{
int a = ... ;
int b = ... ;
if( ... )
return ... ;
int c = f( ... , ... , ... );
return a+b/c;
}
при входе в нее происходит ровно то, что делает push (т.е. в стек заталкивается большое пустое пространство и его длинна), а при выходе — pop; между этими вызовами происходит как раз работа с указателем, возвращенным push
такой вариант железного стека тоже интересен, хотя, конечно, не отменяет нормально теста с ассемблером, где интерфейс push & pop может быть другим
Исходная версия www_linux_org_ru, :
Твой вариант зачем-то оставляет дыры в массиве soft_stack. Вот это надо исправить.
это сделано *специально*, чтобы смоделировать железный стек
пример: у нас есть функция:
int f(int x, int y, int z)
{
int a = ...
int b = ...
if( ... )
return ...
int c = f( ... , ... , ... )
return a+b/c;
}
при входе в нее происходит ровно то, что делает push (т.е. в стек заталкивается большое пустое пространство и его длинна), а при выходе — pop; между этими вызовами происходит как раз работа с указателем, возвращенным push
такой вариант железного стека тоже интересен, хотя, конечно, не отменяет нормально теста с ассемблером, где интерфейс push & pop может быть другим