![]() |
1
6
Intel ABI只是Intel建立的调用约定。 通常,在函数调用期间,参数的传递方式以及保存或丢弃的寄存器由函数的调用约定定义: http://en.wikipedia.org/wiki/Calling_convention 特别是对于\uu cdecl、\uu stdcall和\uu fastcall,您应该期望EAX、ECX和EDX被丢弃,并且您的函数应该保留其他寄存器并在EAX上返回(或者EDX:EAX用于64位返回)。
在C中,默认的调用约定通常是\uu cdecl,对于Windows导出的API,它通常是\uu stdcall。 |
![]() |
2
1
它是英特尔应用程序二进制接口,是一组规则,指示哪些寄存器可以在不保存的情况下使用,参数如何被推送到堆栈上,调用者或被调用者是否清除堆栈帧等等。 如果你 知道 但这并不一定适用于所有编译器,除非编译器特别声明,否则这样想是不明智的。 |
![]() |
Tedi · 在保存和检索机制之间包含命令的代码 7 年前 |
![]() |
Bibrak · 如何从程序集传递堆栈中某个位置的内存地址? 7 年前 |
![]() |
G. Guidi · 为什么寄存器$v0被保存? 7 年前 |
![]() |
Vagish · C:通过引用传递自动变量 7 年前 |
![]() |
St.Antario · 了解cpu寄存器 7 年前 |
![]() |
Dfarrelly · x86给定AH和AL计算AX? 8 年前 |
![]() |
CRThaze · 函数中寄存器使用的ARMv6最佳实践 10 年前 |