cpu如何知道从内存读多少字节指令?
当cpu从内存读取指令是,首先读到的B8,这个代表的movax,然后解析出,ax是16位的寄存器需要2个自己,所以会继续向下读取2个字节,总共三个字节。查看这条指令,当c...
当cpu从内存读取指令是,首先读到的B8,这个代表的mov ax,然后解析出,ax是16位的寄存器需要2个自己,所以会继续向下读取2个字节,总共三个字节。
查看这条指令,当cpu从内存读取指令是,首先读到的B9,这个代表的mov eax,然后解析出,eax是32位的寄存器需要4个字节的数据,所有会继续向下读取4个字节,总共5个字节。 展开
查看这条指令,当cpu从内存读取指令是,首先读到的B9,这个代表的mov eax,然后解析出,eax是32位的寄存器需要4个字节的数据,所有会继续向下读取4个字节,总共5个字节。 展开
1个回答
2018-02-07
展开全部
指令都有固定格式,一般先读第一个字节判断是否是前缀,然后读第2字节并查表看是否是机器码,若不是则读第3个字节查表,找到指令后继续读ModR/M、SIB等参数确定后面还有几个操作数。
如读取指令mov eax,dword ptr ss:[ebx ecx*4]先读第一个字节,查表得到前缀SS,读第2字节,发现是mov r,r/m,于是读第3字节(ModR/M)得到r=eax,r/m=disp32[--],因此需要读第4字节(SIB),得到r/m=[ebx ecx*4]具体可以看Intel Architecture Software Developer’s Manual Volume2: Instruction Set Reference
如读取指令mov eax,dword ptr ss:[ebx ecx*4]先读第一个字节,查表得到前缀SS,读第2字节,发现是mov r,r/m,于是读第3字节(ModR/M)得到r=eax,r/m=disp32[--],因此需要读第4字节(SIB),得到r/m=[ebx ecx*4]具体可以看Intel Architecture Software Developer’s Manual Volume2: Instruction Set Reference
东莞市友贸实业有限公司_
2023-11-22 广告
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据...
点击进入详情页
本回答由东莞市友贸实业有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询