2012-01-06 5 views
0

У меня есть функция в программе под названием этой сборки:Что такое конвенция в Linux?

push xxx 
push xxx 
call xxx 
add esp, xxx 

Из того, что я знаю, что эта функция имеет соглашение о вызовах Cdecl. В GCC я использую __attribute__((cdecl)), чтобы сделать другую функцию так же, как и указанную выше функцию.

Но когда я отлажена его это собрание было показано:

push xxx 
push xxx 
call xxx 

нет add esp, xxx!

Какую конвенцию о вызове я должен использовать для создания одной и той же сборки?

ответ

4

Я сомневаюсь, что это не имеет ничего общего с заходом конвенции, и, скорее всего, делать с оптимизацией компилятора, как «отсрочка-поп» (где компилятор будет ждать, чтобы вытолкнуть стек до позже)

Смежные вопросы