Linux Hacking中,gcc通常有三种规范:cdecl、fastcall、pascal。
cdecl:c语言缺省规范,参数首先由有向左压入堆栈。所不同的是,函数本身不清理堆栈,调用者负责清理堆栈。由于这种变化,C调用约定允许函数的参数的个数是不固定的,这也是C语言的一大特色。
例如:
gcc -S 后,即为:(EDX:EAX 为结果以返回)
Linux Hacking中,gcc通常有三种规范:cdecl、fastcall、pascal。
cdecl:c语言缺省规范,参数首先由有向左压入堆栈。所不同的是,函数本身不清理堆栈,调用者负责清理堆栈。由于这种变化,C调用约定允许函数的参数的个数是不固定的,这也是C语言的一大特色。
例如:
gcc -S 后,即为:(EDX:EAX 为结果以返回)