| 发表于:2007-06-14 19:23:06 楼主 |
1.中断问题 今天小弟我看到了中断这一章了, 但是到现在还搞不清楚swi的一些地方, 特请教各位高手, 谢谢! 问题就是在加载中断这个地方 unsigned install_handler(unsigned routine, unsigned *vector) { vec = (routine - (unsigned)vector -8 ) > > 2;//问题1:我知道这里是要求出定义的中断的地址偏移量, 但是减去0x08就可以了, 但是为什么还要减去8, 而且还要向右移两位?? if(vec & 0xff000000) { //greater than 32mbytes return ; } vec = 0xea000000 ¦ vec; //问题2:这里得到了偏移的地址后为什么要跟0xea000000相或?? *vector = vec; return (old_vec); } 2.arm问题 今天拿自己写好的程序拷到另一台机子上去运行, 但是运行不通过, 提示不能打开一个.o文件,感觉是原来的路径和现在的路径可能不一样而出错的, 但是不知道在哪里改正过来。 还有个问题就是:在asm和c混用的时候,为什么总是要从asm先运行起来才能转入c语言,能不能先从c开始,然后转入asm呢?? 3.例子运行不了了 装了ads之后,每个例子都可以运行,但是过了一段时间,自己做了点小程序之后,有个例子运行不了了,(swi)这个例子,但是我没有改动什么地方,可能是设置的问题造成的。问题是:进入axd调试后,按直接运行,但是没有运行到main()函数里,直接到最后的swi就停止了。 请问各位高手这是怎么回事? |
|
|
|
|