当前位置: 代码迷 >> 汇编语言 >> linux 下汇编有关问题3,高人指教!
  详细解决方案

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

热度:1234   发布时间:2013-02-26 00:00:00.0
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处理中断,好像一般不会发出中断吧

有不对的地方还请见谅