Arm 我需要通过给PC提供函数基址和参数来直接调用函数……如何?

Arm 我需要通过给PC提供函数基址和参数来直接调用函数……如何?,arm,Arm,评论如下 在GLCD初始化之后,我必须调用上面的函数。所以,现在我的问题是…取一个条件。如果st=3,那么我必须执行fun2,fun3,fun4,fun5..使用条件语句我可以..但借助于st值,我直接调用了这些函数..为此,我使用汇编语言,以便我们可以直接将函数地址提供给PC…这里我面临一个传递参数的问题..有一次我们通过将特定函数的基址提供给PC来调用函数PC…如何将参数与直接调用一起传递给这些函数 这完全取决于您的系统:一些系统只传递参数寄存器,一些在堆栈中,一些混合(例如,只有小的或在r

评论如下

在GLCD初始化之后,我必须调用上面的函数。所以,现在我的问题是…取一个条件。如果st=3,那么我必须执行fun2,fun3,fun4,fun5..使用条件语句我可以..但借助于st值,我直接调用了这些函数..为此,我使用汇编语言,以便我们可以直接将函数地址提供给PC…这里我面临一个传递参数的问题..有一次我们通过将特定函数的基址提供给PC来调用函数PC…如何将参数与直接调用一起传递给这些函数


这完全取决于您的系统:一些系统只传递参数寄存器,一些在堆栈中,一些混合(例如,只有小的或在regs中的第一个值)

参考

如果您不确定系统是如何处理它的,只需分解对其中一个函数的过程调用,查看它是如何完成的

    void fun1(int x)
{
    display(x);
    display(x+1);
    display(2*x);
}

void fun2(int x)
{
    display(x*3);
    display(x+3);
    display(x-1);
}
void fun3(int x)
{
    display(x+2);
    display(x+5);
}
.
.
.
.
function_ptr[]={fun1,fun2,fun3,.......fun20};
int st=0;// to indicate the function count
int main()
{
    GLCD_init(); 

   //comment here


}