重庆生活网

标题: [解决]ARM Data abort 异常的疑问 [打印本页]

作者: caat    时间: 2020-3-13 16:48
标题: [解决]ARM Data abort 异常的疑问
为了测试arm的 data abort 異常,寫了如下代码,故意访问1M意外沒有被映射的區域:
00000000     ldr sp, =0x100000
00000004     add sp, sp, #8
00000008     push {r0}     /* access un-mapped area, cause Data abort exception */
0000000C     push {r1}
00000010     ............

復制代碼
异常响應代碼如下:
dabort_handler:
    sub lr, lr, 8
    ldr r0, =str_dabort
    mov r1, lr
    bl  printf
      .....

str_dabort:
    .string   "Data abort exception, LR = 0x%x\r\n"

复制代碼
测试得到的打印信息:
Data abort exception, LR = 0x100000

按照书上讲的,LR_abt 应该保存导致data abort异常的那条指令地址才对,但这里为什么是 0x100000 而不是 0x0000008 呢?



--------------------------
其实LR是没有问题的,最后发现是自定义函数printf里面有bug導致的。


作者: 小萍    时间: 2020-3-13 16:48
指令的寻數據地址,即0x100000 。





欢迎光临 重庆生活网 (http://www.php200.cn/) Powered by Discuz! X3