LINUX.ORG.RU

История изменений

Исправление 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 может быть другим