在哪里可以找到有关寄存器的文档,哪些汇编在调用C函数时必须保留?
答案 0 :(得分:4)
答案 1 :(得分:4)
这称为 ABI (应用程序二进制接口)。你在哪里找到它?取决于您的架构和操作系统。
例如:Google for ABI x86_64 linux
如果你想找到64位linux系统的调用约定。
答案 2 :(得分:2)
Agner Fogs博士的优化手册包含32位和64位的所有常见系统和编译器约定(ABI)的精彩并列列表。它们还包含许多其他有用的信息,您可以在此处获取它们:http://www.agner.org/optimize/
答案 3 :(得分:0)
使用了几种调用约定,但最常见的是CDECL。参数按照该链接描述的顺序被压入堆栈,被调用者可用的“临时”寄存器是%eax
,%ecx
和%edx
。其他任何东西都应该保留在堆栈上。
但是,正如其他人所指出的那样,这只是众多惯例之一。查看您正在编程的系统的文档。
答案 4 :(得分:0)
看一下这个链接:
Using Win32 calling conventions
Intel x86 Function-call Conventions - Assembly View
希望这有帮助。
答案 5 :(得分:0)
这几乎是特定于架构的。看看维基百科对初学者的解释。