首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

linux 下汇编有关问题3,高人指教!

2012-03-19 
linux 下汇编问题3,高人指教!!!!!8.intel为了解决64位缓存块的问题,按照16字节边界对准16位数据。对准32位

linux 下汇编问题3,高人指教!!!!!
8.intel为了解决64位缓存块的问题,按照16字节边界对准16位数据。对准32位数据使它的基址是4的倍数。对准64位数据是他的基址是8的倍数。避免小的数据传输。而是使用单一的大型数据传输。避免在堆栈中使用大的数据长度(比如80位和128位浮点值)。-----这里的对准是怎么回事?还有各项都是什么意思,为什么这样作?

9.驱动程序发出的应该是软中断,不知对不?

10.   movl     $0xffffffff,     %ebx
          addl       $1,     %ebx
          jc       overflow
-------
        movl   $2,       %eax
        subl     $4,     %eax
        jc       overflow
为什么作这两个时产生segmentation   fault错误呢,但是书上说好像是能做,不知是我什么地方作错了,还是就不能作?



[解决办法]
8. 就是地址对齐,可以提高内存访问性能。至于“避免在堆栈中使用大的数据长度(比如80位和128位浮点值”,概念有点含糊,这样用是可以的,只是push/pop不能操作这种数据长度。

9. 应该是。

10. 不知道,看不出问题来,也许是修改了寄存器导致程序其他地方出的问题。我记得在Linux的x86 实现中,ebx保存模块的GOT表指针,不能修改的。

[解决办法]
驱动程序是对硬件产生的中断进行处理(回调函数)
并且通过写硬件寄存器(端口)对硬件进行控制

除非你要做虚拟光驱,按键精灵之类的东西,才要发送软中断
[解决办法]
内存地址都是以字节为单位,4字节对齐,地址要为4的倍数,二进制低两位为00的数就是4的倍数了

同意楼上,驱动程序一般直接跟硬件打交道,都有专门的中断服务程序ISR处理中断,好像一般不会发出中断吧

有不对的地方还请见谅

热点排行