今天在网上学习 朴素Linux. 了解了函数的返回值一般放在 eax 寄存器中,也就是一般返回值不超过4个字节。
如果我要返回一个多于4于四个字节的结果,比如一个超过 4 字节的结构体。结果怎么存呢,还是用eax吗?
感谢 Theo 的回答。 看了他推荐的文章,我发现自己要问的是 cdecl 这种调用约定中,如何返回超大的对象或结构体。
现在我自己来解答一下:整数值或内存地址,是通过EAX寄存器返回的。对于较小的结构体或对象,可以通过EAX:EDX寄存器对返回。对于超大的对象或结构体,caller在调用函数之前会分配出内存空间,然后把这个空间地址作为第一个参数隐式地传给函数。被调用的函数callee把结果写进这片内存空间,然后pop空间地址,然后返回。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
人生最曼妙的风景,竟是内心的淡定与从容!