swi系统模式的问题...

[复制链接]
1775|1
 楼主| hnz2010 发表于 2012-2-4 20:20 | 显示全部楼层 |阅读模式
现在用的arm芯片为lpc3250.开发环境为keil u4.
在c语言的函数中调用swi.如下:
void function_A(void);
int main()
{
....
function_A();
...
}

__asm function_A()
{
         SWI  0x0
}
请问这样调用swi指令可以吗?会有什么问题吗?
另外当执行SWI后,系统进入了管理模式,请问这和ARM芯片刚启动时的管理模式在哪些方法可能不同呢,当然除了R0-R15,等各模式寄存器值不同之外,其它有没有不同呢?




{}
xinzha 发表于 2012-2-4 22:22 | 显示全部楼层
swi进入的是supervisor模式,而不是system模式,supervisor模式是一种异常模式,而system模式同usr模式共用同一组寄存器,区别只是在于对cpu的不同控制权,system可以作为程序正常执行时的模式,而supervisor模式不行(当然如果你的程序特殊,处理方法特别也无所谓)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

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