中断问题

[复制链接]
2269|2
 楼主| rainbowwrh 发表于 2007-6-13 22:15 | 显示全部楼层 |阅读模式
今天小弟我看到了中断这一章了,&nbsp;但是到现在还搞不清楚SWI的一些地方,&nbsp;特请教各位高手,&nbsp;谢谢!<br /><br />问题就是在加载中断这个地方<br /><br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;Install_Handler(unsigned&nbsp;routine,&nbsp;unsigned&nbsp;*vector)<br />{<br />&nbsp;&nbsp;&nbsp;vec&nbsp;=&nbsp;(routine&nbsp;-&nbsp;(unsigned)vector&nbsp;-8&nbsp;)&nbsp;&gt&gt2;//问题1:我知道这里是要求出定义的中断的地址偏移量,&nbsp;但是减去0x08就可以了,&nbsp;但是为什么还要减去8,&nbsp;而且还要向右移两位??<br />&nbsp;&nbsp;&nbsp;if(vec&nbsp;&&nbsp;0xff000000)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//greater&nbsp;than&nbsp;32MBytes<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;vec&nbsp;=&nbsp;0xea000000&nbsp;|&nbsp;vec;&nbsp;//问题2:这里得到了偏移的地址后为什么要跟0xea000000相或??<br />&nbsp;&nbsp;&nbsp;*vector&nbsp;=&nbsp;vec;<br />&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;(old_vec);<br />}<br /><br />就这2个问题,&nbsp;希望大家能帮帮忙,&nbsp;困惑之中!
ayb_ice 发表于 2007-6-14 09:17 | 显示全部楼层

这要看SWI的指令编码,熟汇编。。。

  
 楼主| rainbowwrh 发表于 2007-6-14 11:19 | 显示全部楼层

RE

这是在C语言和汇编混合使用的时候用到的<br />目的是建立中断的地址,好在需要中断的时候能调用中断的程序<br />但是我就是不明白我上面所说的地方<br />也就是为什么要减两次,而且还要右移,&nbsp;请高人解释解释,&nbsp;谢谢了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

43

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部