А не подскажет ли кто где достать доку как в С происходит работа со стеком на низком уровне ну т.е. как функциям передаються параметры в какой последовательности как извлекаются и пр. gcc на x86.
а если конкретнее есть программа в ней вызываеться некоторая функция call ..... ничего если я просто вместо этого call, инструкциями nop заполню. стек не поплывет или не будет утечки памяти?
> а если конкретнее есть программа в ней вызываеться некоторая функция call ..... ничего если я просто вместо этого call, инструкциями nop заполню. стек не поплывет или не будет утечки памяти?
на большинстве реализаций Си стек освобождает вызыватель, так что не поплывет.
> gcc -S делает ужасный код весьма непригодный для чтения вообще. По крайней мере то, что я видел :)
классный ход. вопрос был: как С работает со стеком, в частности при вызове функции. интересовал в частности же gcc. ответ был: ну посмтри -- флаг -S покажет как gcc работает со стеком в частности при вызове функции. Твой комент офигеть. ну чтож поделаешь, если уж gcc такой код помпилит? или другие компиляторы генерируют такой код , чтоб его хьюманам читать было удобно?
элементарая программа на Си с одной функцией int f(int z) действительно дизассемблируется ну более или менее нормально. Но вот посмотрел я асм-код простейшей проги нa С++ (один класс с одним методом) - это просто ужас :) Сишные проги ковырять gcc -S' ом в принйипе можно :)