在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 4235|回复: 7

在C程序中安装异常中断处理程序 的疑问?

[复制链接]
发表于 2005-10-18 14:18:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在C程序中安装异常中断处理程序:
unsigned Install_Handler( unsigned routine, unsigned *vector )
{
    unsigned vec, old_vec;
    vec = (routine - (unsigned)vector - 8) >> 2;
    if (vec & 0xff000000)
    {
        printf("Handler greater than 32MBytes from vector");
    }
    vec = 0xea000000 | vec;     /* OR in 'branch always' code */
    old_vec = *vector;
    *vector = vec;
    return (old_vec);
}
其中第5行 vec = (routine - (unsigned)vector - 8) >> 2;
为什么要减8呢,书上说是为了允许指令预取,可我还是不明白,那位大虾能给我详细的解释一下?
我看得书是《arm体系结构与编程》,杜春雷 编著。第272页。
发表于 2006-10-18 22:47:21 | 显示全部楼层
我现在正看到这,研究一下:)
发表于 2006-10-18 22:48:10 | 显示全部楼层
晕,想不到发帖和回帖刚好相隔一年....
发表于 2006-10-18 23:42:55 | 显示全部楼层
刚看了一下,大概是这么理解的:
假设在Vector处,有指令:B   irq_handler
                                              .
                                              .
                                              irq_handler
---------------------------------------------------
ARM允许指令预取。在CPU执行当前指令的同时,可以从存储器中预取其后若干条指令,具体预取多少条,不同的ARM中有不同的数值。然而按照程序,我是觉得其做法是依据ARM7的三条流水线这个概念来进行的(书中说是预取,就认为是在执行B   irq_handler(假设在0x18处)这条指令时,PC是指向此指令+8这个地方的。

而,B   irq_handler指令的意思是,程序跳转到PC+24位立即数(扩展成32为带符号数,左移2位)这个地方,也就是irq_handler处。

上上面看来,应该是(0x18+8)=PC....PC+immed_24<<2=routine,所以要得到immed_24,就逆回去,从而表现为:
vec = (routine - (unsigned)vector - 8) >> 2

不知道理解得对不对,请高手指点。
发表于 2006-10-24 23:18:50 | 显示全部楼层
这个是ARM7的预取指啊,由于这个安装的是SWI中断,所以是执行时产生的中断,这是PC应该是向前了8个字节了
发表于 2009-9-4 05:15:05 | 显示全部楼层
ARM中的B 跳转指令是以当前PC寄存器的值作为基址的,在ARM中PC的值比当前指令地址要多2条指令(指令预取),所以~~
发表于 2018-12-16 14:57:13 | 显示全部楼层
发表于 2018-12-21 18:14:45 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-29 10:24 , Processed in 0.041276 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表