gpt4 book ai didi

c - 如何在 C 或 ASM 中获取调用函数的传入参数

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:57 24 4
gpt4 key购买 nike

我想从函数 B 中的调用函数 A 的传入参数访问数据。有办法吗?

#define get_caller_incoming_arg(call) 0
void B(int z)
{
int _arg0 = get_caller_incoming_arg(0);
printf ("in A(arg0): %x\n", _arg0);
printf ("in B: %x\n", z);
}

void A(int x)
{
int buff[10];

for (int i = 0; i < 10; ++i)
buff[i] = i + 5;

B(buff[1]);
}

int main(int argc, const char * argv[])
{
A(0xdeadbeef);
return 0;
}

目标机器是运行 OSX 的 x86_64,编译器是 clang

最佳答案

尝试创建一个全局变量,然后像代码中那样将参数值传递给该变量

#define get_caller_incoming_arg(call) 0
int value=0;
void B(int z)
{
int _arg0 = get_caller_incoming_arg(0);
int valueofA=value;
printf ("in A(arg0): %x\n", _arg0);
printf ("in B: %x\n", z);
}

void A(int x)
{
int buff[10];
value=x;
for (int i = 0; i < 10; ++i)
buff[i] = i + 5;

B(buff[1]);
}

int main(int argc, const char * argv[])
{
A(0xdeadbeef);
return 0;
}

关于c - 如何在 C 或 ASM 中获取调用函数的传入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146897/

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