小编pup*_*m64的帖子

可以使用 C 将函数的存储位置存储到 RAM 中吗?

我一直在玩 C 语言的 Game Boy Advance 编码。为了使中断正常工作,必须将中断处理程序例程的地址手动复制到 RAM 位置 0x03007FFC。我知道如何在 ARM Assembly 中执行此操作,但不知道如何在 C 中执行此操作。我正在尝试这样的操作:

#define REG_INTERRUPT *(vu32*)0x03007FFC
void irqhandler()
{
    while(1){}
}

int main()
{
    REG_INTERRUPT = &irqhandler();

    while(1){}
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。根据我对 C 函数的理解,C 似乎认为我正在尝试获取返回值的地址irqhandler(因为它是空的,所以没有返回值),这就是错误的来源。我如何告诉 C 我想要函数本身的内存位置?

c embedded arm game-boy-advance

3
推荐指数
1
解决办法
335
查看次数

标签 统计

arm ×1

c ×1

embedded ×1

game-boy-advance ×1