ARM7 TDMI 未定义指令异常手动生成



我正在尝试测试在ARM7 TDMI处理器上运行的一些异常处理代码。 我想手动创建一个指令操作码,它将生成"未定义的指令"异常。 到目前为止,我已经做到了这一点:

void createUndefinedException()
{    
    static const int instr = 0x26889912; // bad opcode
    ((void(*)(void))instr)();
}

我之所以找到上面的操作码,是因为我今天在网上找到了一个参考页面,该页面在最底部讨论了未定义的指令操作码。

上面的代码生成预取中止异常,而不是未定义的指令异常。

有人知道如何轻松创建它吗?

只想验证我对此异常的处理是否正常工作。

创建一个 asm 文件

.globl test_function
test_function:
.word 0x26889912
bx lr

组装它

arm-none-linux-gnueabi-as fun.s -o fun.o

从 C 代码调用它

extern void test_function ( void );
...
test_function();

然后将其添加到要链接的对象列表中

arm-none-linux-gnueabi-gcc myprogram.c fun.o -o myprogram

并运行它。

你需要从

int 的地址创建一个函数:

typedef void (*Exception)(void)
static unsigned long illegalOpcode=0x26889912;
Exception e=(Exception)&illegalOpcode;
e();

最新更新