n 1 k z z z Asked:2022-06-14 05:28:16 +0000 UTC2022-06-14 05:28:16 +0000 UTC 2022-06-14 05:28:16 +0000 UTC 从右到左传递函数参数有什么意义? 772 在研究函数调用约定 ( __stdcall, __cdecl) 时,我发现函数参数是从右到左传递到堆栈的。为什么参数是从右到左传递而没有别的(除了__fastcalland __vectorcall)。这种现象有什么解释吗? функции 1 个回答 Voted Best Answer MBo 2022-06-14T14:12:07Z2022-06-14T14:12:07Z 顺序并不重要 - 好吧,他们选择了它,他们选择了它,主要是为了兼容性而坚持它。 但是,cdecl从这varargs一刻起,它在效率方面似乎很重要。 在堆栈的顶部是第一个(左参数),然后是第二个,依此类推。因此,固定参数位于编译时已知的偏移量,访问它们很容易、快速且安全。对于可选的偏移量参数,也很容易找到。 ...否则,必须根据可选部分中的参数总数计算偏移量
顺序并不重要 - 好吧,他们选择了它,他们选择了它,主要是为了兼容性而坚持它。
但是,
cdecl从这varargs一刻起,它在效率方面似乎很重要。在堆栈的顶部是第一个(左参数),然后是第二个,依此类推。因此,固定参数位于编译时已知的偏移量,访问它们很容易、快速且安全。对于可选的偏移量参数,也很容易找到。
...否则,必须根据可选部分中的参数总数计算偏移量