|
今天小弟我看到了中断这一章了, 但是到现在还搞不清楚SWI的一些地方, 特请教各位高手, 谢谢!<br /><br />问题就是在加载中断这个地方<br /><br /> unsigned Install_Handler(unsigned routine, unsigned *vector)<br />{<br /> vec = (routine - (unsigned)vector -8 ) >>2;//问题1:我知道这里是要求出定义的中断的地址偏移量, 但是减去0x08就可以了, 但是为什么还要减去8, 而且还要向右移两位??<br /> if(vec & 0xff000000)<br /> {<br /> //greater than 32MBytes<br /> return ; <br /> }<br /> vec = 0xea000000 | vec; //问题2:这里得到了偏移的地址后为什么要跟0xea000000相或??<br /> *vector = vec;<br /> return (old_vec);<br />}<br /><br />就这2个问题, 希望大家能帮帮忙, 困惑之中! |
|