瞧瞧这个纯软件仿真中断的方法

[复制链接]
1824|2
 楼主| xieqin 发表于 2007-11-19 10:44 | 显示全部楼层 |阅读模式
前两天一个朋友问如何纯软件仿真中断.以前我也遇到过这样的问题,不过都没有解决,只是绕过去了.于是写了一个模似硬件中断的函数来试试,<br />测试证明是可行的.在此跟大家分享,并期望得到大家更好的方法.<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;CALL_IRQ<br />CALL_IRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proc<br />&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r0,r1,lr}<br />&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;cpsr<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=call_irq_ret<br />&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;r1,&nbsp;#0x04<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;cpsr_c,&nbsp;#0x12<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;spsr_cxsf,&nbsp;r0<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;lr,&nbsp;r1<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;#0x18<br />&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;&nbsp;&nbsp;&nbsp;r0<br />call_irq_ret<br />&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r0,r1,lr}<br />&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;&nbsp;&nbsp;&nbsp;lr<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDP<br />在程序中,先置位某个中断,再显式调用CALL_IRQ()即可.<br />
阿南 发表于 2007-11-19 22:00 | 显示全部楼层

不错,不错,支持,顶!

  
 楼主| xieqin 发表于 2007-11-19 22:38 | 显示全部楼层

我自己顶顶.呵呵

没什么深的技术含量.&nbsp;最基础的东东最简单的实现.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

140

帖子

0

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