gpt4 book ai didi

c - ARM 程序集使用 C 调用以寄存器作为参数的函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:03 25 4
gpt4 key购买 nike

我有以下 ARM 汇编代码:

mov r0, SP
mov r1, LR
bl func

有没有办法用C代码调用函数func?类似func(SP, LR)

谢谢!

最佳答案

取决于你到底想做什么以及你使用什么编译器。使用 gcc 可以这样工作:

extern void func(void*, void*);
void foo()
{
int dummy[4];
func(&dummy, __builtin_return_address(0));
}

不过,这可能并不总能为您提供准确的堆栈指针。根据 godbolt它产生以下汇编代码:

foo():
push {lr}
sub sp, sp, #20
mov r1, lr
mov r0, sp
bl func(void*, void*)
add sp, sp, #20
ldr pc, [sp], #4

关于c - ARM 程序集使用 C 调用以寄存器作为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252793/

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