官方QQ群收藏本站

百问linux嵌入式论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 257|回复: 3

第14课 第004节 第28分钟 关于undefined exception

[复制链接]

8

主题

28

帖子

180

积分

验证会员

积分
180
发表于 2019-4-27 13:10:43 | 显示全部楼层 |阅读模式
[mw_shl_code=asm,true]
/* 清除BSS段 */
        bl clean_bss
        /* 故意加入一条未定义指令 CPU执行到这里就会发生指令异常,会跳转到und*/
        bl uart0_init
        bl print1
und_code:
        .word 0x03000000

        bl print2       

        //bl main  /* 使用BL命令相对跳转, 程序仍然在NOR/sram执行 */
        ldr pc, =main /* 绝对跳转, 跳到SDRAM */
[/mw_shl_code]


代码中如果加入bl print1,bl print2可以得到视频输出结果,如下图。

a.PNG

但如果删除这两条调试指令(bl print1和bl print2,只是删除了这两条,没有其它任何多余操作),不能输出异常显示,如下图

b.PNG
这块不能理解,按说也应该进入异常呀,请老师帮忙解答下,谢谢~





捕获.PNG
回复

使用道具 举报

8

主题

28

帖子

180

积分

验证会员

积分
180
 楼主| 发表于 2019-4-27 13:12:47 | 显示全部楼层

上边代码是乱的,我再发张代码截图吧
捕获.PNG
回复 支持 反对

使用道具 举报

0

主题

1272

帖子

3864

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3864
发表于 2019-4-27 19:36:28 | 显示全部楼层
Bennett 发表于 2019-4-27 13:12
上边代码是乱的,我再发张代码截图吧


公众号baiwenkeji发过,标题是:新1期第14课und异常模式BUG以及对应的解决方法

http://bbs.100ask.org/forum.php? ... ght=und%D2%EC%B3%A3
我是百问网www.100ask.org答疑助手,有关站务问题请与我联系。
韦东山视频开发板购买店铺https://100ask.taobao.com/
微信公众平台:baiwenkeji
回复 支持 反对

使用道具 举报

8

主题

28

帖子

180

积分

验证会员

积分
180
 楼主| 发表于 2019-4-28 19:51:11 | 显示全部楼层
百问网-杨老师 发表于 2019-4-27 19:36
公众号baiwenkeji发过,标题是:新1期第14课und异常模式BUG以及对应的解决方法

http://bbs.100ask.o ...

谢谢老师的指导~~这个问题我明白了。

另外在这个帖子中有人对bl print1如何满足指令0xdeadc0de的条件提出疑问。
在这里,我说一下我自己的理解以留存。


我看了写好的程序的反汇编,多数正常的指令码都是e开头的,如下图。
捕获.PNG

e=1110,对应下图中,ignore,即不需判断CPSR的状态为即可执行。

而在加入的指令代码0xdeadc0de,中高4位为0xd =1101,即需判断CPSR的高4位是否满足条件,如果满足则执行该指令(0xdeadc0de),如果不满足则不执行。
而恰好bl print1使得CPSR的N、Z、C、V位满足了该条件。所以执行了该指令,又因该指令是未定义的,所以跳转到und exception。
如果没有bl print1,CPSR的N、Z、C、V位不满足该条件,也就不会执行这条指令0xdeadc0de),继而也就不会进入未定义异常
捕获.PNG
回复 支持 反对

使用道具 举报

技术支持
在线咨询
咨询热线
0755-86200561
微信扫一扫
获取更多资讯!

Archiver|小黑屋|百问linux嵌入式论坛     

GMT+8, 2019-11-17 19:01 , Processed in 0.131665 second(s), 16 queries , File On.

Powered by Discuz! X3.3 Licensed

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表