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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.