iit (07.02.2006 11:45, просмотров: 1) ответил Romario на э..мм...я про модели стеков не понял. функция на asm? почему бы не воспользоваться соглашениями о calling convention?
Ответ: Я как раз про эти соглашения и говорю Функция написана на асме. В Си объявлена как внешняя функция с пятью входными параметрами (например int). Так вот когда Си передает в функцию пятый параметр, то использует для этих целей стек, портя при этом его содержимое.
extern func2(...)
main ()
{
func1();
}
func1()
{
func2(1,2,3,4,5);
}
Например при вызове функции func1() из main компилятор сохранил в стеке r0 таким образом ldmfd sp!,{r0} при этом указатель стека уменьшился на 1 слово. А когда эта скотина передает в func2 пятый параметр она делает следующее
mov rx,#5
str rx,[sp]
и получается что r0 по п...де пошел.