gpt4 book ai didi

c - 跳转到 ARM 上的 Naked 函数

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

问题很简单。

我的代码是:

__attribute__ ((naked)) void function(int arg1, int arg2, int arg3)
{
_asm("push {r0-r6}\n"
" .... ");
if(checkSomeValue(arg3))
callSomeFunction(arg1, arg2);
}

我期望的汇编代码:

push {r0-r6}
....
instruction of if ~ callSomefunction

但是..结果是:

str r1, [sp+0x0c]
str r2, [sp+0x08] // back up register for if~ callsomefunction statement
push {r0-r6}
...

如何将我的 asm 代码放在函数的开头?

最佳答案

我的方式:

__attribute__ ((naked)) void function(int arg1, int arg2, int arg3)
{
_asm("push {r0-r6}\n"
"bl calleeFunction\n"
"pop {r0-r6}\n"
"b backToOriginal\n"
);
}

void calleeFunction(int arg1, int arg2, int arg3)
{
if(checkSomeValue(arg3))
callSomeFunction(arg1, arg2);
}

关于c - 跳转到 ARM 上的 Naked 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502936/

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