0

我编译了两次相同的 C 源代码:

  1. Arch:x86,操作系统:Slackware 14(32 位),编译器:gcc 4.7.1(32 位)
  2. Arch:x86,操作系统:Windows XP(32位),编译器:gcc 4.4.1(32位)

阅读汇编程序列表,我注意到调用约定(System V i386 ABI 和 cdecl)似乎相同,除了名称装饰(在第一种情况下缺少尾随 _)和被调用者保存的寄存器(EDI、ESI、EBX 与 EAX、ECX、EDX )。

这是真的吗?
如果是这样,除了名称修饰之外,我们是否可以将 System V i386 ABI 视为 cdecl 的变体?

谢谢

4

0 回答 0