LINUX.ORG.RU

с и стек


0

0
А не подскажет ли кто где достать доку как в С происходит работа со стеком на низком уровне ну т.е. как функциям передаються параметры в какой последовательности как извлекаются и пр. gcc на x86.
anonymous
а если конкретнее есть программа в ней вызываеться некоторая функция call ..... ничего если я просто вместо этого call, инструкциями nop заполню. стек не поплывет или не будет утечки памяти?
anonymous
()
Ответ на: комментарий от anonymous
и еще нигде нельзя достать руской доки по api Gtk2
anonymous
()
>где достать доку как в С происходит работа

есть такой флаг компиляции -S кажется,
вместо объектного файла в конце получается ассемблерный код.

man gcc в общем

а доки по gtk

можно достать на
http://gtk.org

fghj ★★★★★
()
Ответ на: комментарий от anonymous
> а если конкретнее есть программа в ней вызываеться некоторая функция call ..... ничего если я просто вместо этого call, инструкциями nop заполню. стек не поплывет или не будет утечки памяти?

на большинстве реализаций Си стек освобождает вызыватель, так что не поплывет.

dilmah ★★★★★
()
Ответ на: комментарий от Krasu
> gcc -S делает ужасный код весьма непригодный для чтения вообще. По крайней мере то, что я видел :)

классный ход. вопрос был: как С работает со стеком, в частности при вызове функции. интересовал в частности же gcc. ответ был: ну посмтри -- флаг -S покажет как gcc работает со стеком в частности при вызове функции. Твой комент офигеть. ну чтож поделаешь, если уж gcc такой код помпилит? или другие компиляторы генерируют такой код , чтоб его хьюманам читать было удобно?

anonymous
()
Ответ на: комментарий от Krasu
>gcc -S делает ужасный код весьма непригодный для чтения вообще.

есть еще ключ -g.
fghj ★★★★★
()
Ответ на: комментарий от anonymous
ну вперёд - считать оффсеты ... что ты там поймёш, я не знаю ...
Krasu
()
Ответ на: комментарий от anonymous
прикинь, в вонючей винде есть и такие дизасемблеры, которые делают код, что "хьюманам читать было удобно" :)
Krasu
()
Try to compile without optimisation and then disassemble with objdump.
anonymous
()
Ответ на: комментарий от fghj
элементарая программа на Си с одной функцией int f(int z) действительно дизассемблируется ну более или менее нормально. Но вот посмотрел я асм-код простейшей проги нa С++ (один класс с одним методом) - это просто ужас :) Сишные проги ковырять gcc -S' ом в принйипе можно :)
Krasu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.