本帖最后由 ShakaLeo 于 2010-3-25 14:46 编辑
补充一下:
2楼的方法有个缺陷,指令asm("ldr.w r0, [pc, #+4]");的地址必须是字对齐的,因为这条指令在计算PC偏移量的时候会对PC取字对齐的运算。
下边的方法没有这个缺陷,已经在IAR ARM5.40上实验过了:
void foo(void)
{
asm("mov.n r1, pc");
asm("ldr.w r0, [r1, #+6]");
asm("b.w .+16");
asm("DCD var");
asm("nop");
}
|