目录
描述
-
1
014_und_exception_014_004/001有一个BUG,把以下字符串多加一个字符,看看程序还能否运行。(尝试分析反汇编,找到原因)
und_string:
.string "undefined instruction exception"
-
2
014_und_exception_014_004/002有一个BUG,把
start.S
中"bl print1"
去掉,看看未定义指令异常会不会发生
-
3
实际上LINUX系统中app调用的open, read等函数就是通过执行swi命令触发异常,在异常处理函数中实现文件的打开、读写功能。我们可以实现类似的功能,写一个led_ctrl汇编函数:
a. 它可以接收1个参数
b. 它会在栈中保存参数
c. 它调用swi #val,这个val来自所接收的参数
d. 恢复参数、返回
修改swi异常处理函数,
e. 根据val来点灯、灭灯
修改main函数,调用 led_ctrl(0),led_ctrl(1)
-
4
对于按键S2,使用快中断支持它。
a. 编写FIQ的中断处理函数,实现保存环境、恢复环境的功能
b. 编写按键的中断处理函数,实现点灯、灭灯功能
c. 修改中断控制器,把S2对应的INTMOD
设置为FIQ
-
5
最后一个程序用到了函数指针、注册中断等概念。这对C语言的要求越来越高。
main
函数中用到这3个初始化函数,led_init();
interrupt_init();
key_eint_init()。
把它们放在一个函数指针数组里,用一个for循环逐个调用
解答
-
1
当字符串为 “undefined instruction exception”,汇编段代码及串口输出&#x