Tag: win64

C / C ++在引擎盖下按值返回struct

(这个问题特定于我的机器的架构和调用约定,Windows x86_64) 我不记得我在哪里读过这个,或者我是否正确地回忆过它,但是我听说过,当一个函数应该按值返回一些结构或对象时,它会将它填入rax (如果对象可以适合64位的寄存器宽度)或传递指向结果对象所在的指针(我猜在调用函数的堆栈帧中分配)在rcx ,它将执行所有常规初始化,然后是mov rax, rcx为回程。 就是这样的 extern some_struct create_it(); // implemented in assembly 真的会有一个秘密参数 extern some_struct create_it(some_struct* secret_param_pointing_to_where_i_will_be); 我的记忆对我有用,还是我不正确? 如何通过函数的值返回大对象(即宽度超过寄存器宽度)?