前两天一个朋友问如何纯软件仿真中断.以前我也遇到过这样的问题,不过都没有解决,只是绕过去了.于是写了一个模似硬件中断的函数来试试,<br />测试证明是可行的.在此跟大家分享,并期望得到大家更好的方法.<br /> EXPORT CALL_IRQ<br />CALL_IRQ proc<br /> STMFD sp!,{r0,r1,lr}<br /> MRS r0, cpsr<br /> LDR r1, =call_irq_ret<br /> ADD r1, r1, #0x04<br /> <br /> MSR cpsr_c, #0x12<br /> <br /> MSR spsr_cxsf, r0<br /> MOV lr, r1<br /> <br /> MOV r0, #0x18<br /> BX r0<br />call_irq_ret<br /> LDMFD sp!,{r0,r1,lr}<br /> BX lr<br /> ENDP<br />在程序中,先置位某个中断,再显式调用CALL_IRQ()即可.<br /> |