__cdecl 调用约定如何返回结构体?

2 x86 assembly nasm

我想调用一个返回 a 的函数struct,这个函数有__cdecl调用约定。

调用约定如何__cdecl返回 a struct

Rud*_*uis 7

那要看。

没有统一的办法。

简单的函数返回,比如ints 在寄存器中返回,但是调用约定 、 、 等都没有__cdecl描述__stdcalla 到底struct是如何返回的。

  • 有些返回适合这些提到的寄存器中的一个(EAX、RAX)或两个寄存器(EDX:EAX 或 RDX:RAX)的简单结构。
  • 其他则通过引用返回此类structs,即函数结果被编译为void带有额外指针参数的函数struct
  • 其他人则混合使用这些策略。

我在这方面遇到了很大的问题(返回 s 的 DLL 函数struct)。事实上,不同的编译器使用不同的策略来返回structs,即使在同一平台上并使用相同的调用约定,这一事实使我发出警告:永远不应该返回struct从 DLL 函数中返回 s。

更多信息: