我一直在玩 C 语言中的 Game Boy Advance 编码。要使中断工作,必须手动将中断处理程序的地址复制到 RAM 位置 0x03007FFC。我知道如何在 ARM 汇编中做到这一点,但在 C 中却不知道。我正在尝试这样的事情:
#define REG_INTERRUPT *(vu32*)0x03007FFC
void irqhandler()
{
while(1){}
}
int main()
{
REG_INTERRUPT = &irqhandler();
while(1){}
return 0;
}
但它不起作用。根据我对 C 函数的了解,似乎 C 正在考虑我正在尝试获取的返回值的地址irqhandler
(因为它是 void,所以没有返回值),这就是错误的来源。如何告诉 C 我想要函数本身的内存位置?