linux 下汇编有关问题3,高人指教!
发布时间:2010-06-14 15:38:20 文章来源:www.iduyao.cn 采编人员:星星草
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处理中断,好像一般不会发出中断吧
有不对的地方还请见谅
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
MSN通讯协议逆向
MSN 进行数据通讯中,据说用了TWN认证,通过SSL/TLS连接到login.passport.com和 loginnet.passportr.com 等服务器。
...
-
win7+64位cpu的exe反汇编问题,多次问人,无果
vs20008写的一个很简单的c++控制台程序
平台是:win7 64位操作系统
用od进行反汇编,...
-
可能很白痴的问题:想给ax赋一个负数怎么做?
比如想要赋一个-5给ax,是不是只有求出这个-5的补码,然后mov进这个补码这一种方法?
------...
-
居然显示不出负数来,悲剧
Assembly code
.386
.model flat,stdcall
include kernel32.inc
includelib kernel32.lib
include ms...
-
call far ptr '标号'的问题[在线等答案]
为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jm...
-
CPU的程序计数器PC和指令指针寄存器IP是一个东西吗?
看上去好像功能完全一样,又觉得不应该是一回事,求教
------解决方案----------...
-
菜鸟问题,高人来帮忙
编程,统计data段中数值为8的字节的个数,用ax保存结果
我的代码
Assembly code
assume cs:code,ds:data
data se...
-
一个死循环问题
什么原因造成内循环才刚循环一次还没完,到了loop s1的时候cx突然变成F?
Assembly code
assume cs:codesg,ds:datas...
-
初学MUL乘法指令,写法求解释下
MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/...
-
汇编如何 取到8051的P0口的内容呢?
Assembly code
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#00H
LOOP: ...