gpt4 book ai didi

assembly - vararg 函数如何找出机器代码中的参数数量?

转载 作者:行者123 更新时间:2023-12-04 00:04:14 26 4
gpt4 key购买 nike

像 printf 这样的可变参数函数如何找出它们得到的参数数量?

参数的数量显然不是作为(隐藏的)参数传递的(参见 call to printf in asm example here )。

有什么诀窍?

最佳答案

诀窍是你以其他方式告诉他们。对于 printf您必须提供一个甚至包含类型信息的格式字符串(尽管这可能不正确)。提供此信息的方式主要是用户契约(Contract),并且通常容易出错。

至于调用约定:通常是从左到右把参数压入栈中,最后是回跳地址。调用例程清除堆栈。所以被调用的例程不需要知道参数的数量。

编辑:在 C++0x 中有一种安全的方式(甚至类型安全!)来调用可变参数函数!

关于assembly - vararg 函数如何找出机器代码中的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5272703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com