我需要通过直接给函数调用函数来给PC带参数......怎么样?

时间:2011-04-19 05:26:22

标签: arm

    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


}

评论为

  

在GLCD初始化之后我必须调用上面的函数。所以,现在我的问题是......采取条件..如果st = 3那么我必须执行fun2,fun3,fun4,fun5 ..带条件语句我可以..但在st值的帮助下,我直接调用这些函数..因为我正在使用汇编语言,以便我们可以直接将我们的函数地址提供给PC ...这里我遇到了传递参数的问题。我们通过向PC提供该特定功能的基地址来调用函数...如何将参数传递给那些函数以及直接调用...

1 个答案:

答案 0 :(得分:1)

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

参见Arm Procedure Call Standard

如果您不确定系统如何处理它,只需将过程调用解组为您的某个函数,看看它是如何完成的。