Есть ли эквивалент для stdcall в GCC?

Я работаю над собственным ядром, используя GCC, и при вызове функций C из кода asm я должен сделать add esp,xx сам. После некоторых поисков я нашел, что stdcall является изобретением Microsoft и не может использовать его в GCC. Есть ли удобный способ сделать эту работу?

1 ответов


существует ли эквивалентность stdcall в linux?

мое ядро в среде linux

Подождите, это ваше собственное ядро или ядро Linux? Потому что если это ваше собственное ядро, то это уже не Linux.

  1. Если вы работаете в Linux, вы захотите придерживаться регулярных соглашений о вызовах и написать свою сборку в соответствии.

  2. Если вы работаете над собственным ядром, вы можете сделать все, что захочешь. GCC и Clang оба поддерживают stdcall соглашения о вызовах на процессорах ix86, например,

    #define stdcall __attribute__((stdcall))
    

    посмотреть: атрибуты функции (руководство GCC)