显然,GoLang仍然使用效率低下的调用约定,其中唯一保留调用(又称为非易失性)的寄存器是RSP和RBP。
runtime.gosave
setjmp
在2017年的Google网上论坛帖子中说,这就是其调用约定/ ABI的工作方式,并且从链接的代码来看,它似乎仍未得到改善。
Go的调用约定也无法有效地传递堆栈中的所有arg,这与x86-64 System V ABI不同,后者在寄存器中传递了前6个整数arg(和前8个FP)。
显然,GoLang仍然使用效率低下的调用约定,其中唯一保留调用(又称为非易失性)的寄存器是RSP和RBP。
runtime.gosave
setjmp
在2017年的Google网上论坛帖子中说,这就是其调用约定/ ABI的工作方式,并且从链接的代码来看,它似乎仍未得到改善。
Go的调用约定也无法有效地传递堆栈中的所有arg,这与x86-64 System V ABI不同,后者在寄存器中传递了前6个整数arg(和前8个FP)。