返回值 (C++)
可以适合于 64 位的标量返回值通过 RAX 返回,这包括 __m64 类型。非标量类型包括浮点数、双精度数和矢量类型,如__m128、__m128i、 和__m128d以 XMM0 返回。返回到 RAX 或 XMM0 中的值的未使用位数的状态未定义。
用户定义类型可以从全局函数和静态成员函数通过值返回。若要把值返回 RAX,用户定义类型的长度必须为 1、2、4、8、16、32 或 64 位;没有用户定义的构造函数、析构函数或复制赋值运算符;没有私有或受保护的非静态数据成员;没有引用类型的非静态数据成员;没有任何基类;没有虚函数;没有数据成员也不符合这些要求。(这实质上是 C++03 POD 类型的定义。由于 C++11 标准中的定义已更改,我们不建议使用std::is_pod进行此测试。)否则,调用方有责任分配内存并为返回值传递一个指针作为第一个参数。然后,后续参数将向右移动一个参数。相同的指针必须在 RAX 中被调用方返回。
这些示例说明如何为具有指定声明的函数传递参数和返回值: