关于8086指令长度的疑惑,Help
8086的cpu是16位的,一次能取2个字节指令,但是有的指令是3个字节的,怎么办?是不是先取头2个字节,发现还需要一个字节,就再取2个字节,一共4个字节,其中前三个字节是正要执行的指令,但是如果这条指令是长跳转指令呢,多出来的那个最后一字节会不会被执行呢?
或者情况完全不是我想的这样?这个指令是怎么取得的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
x86的机器码是变长编码的,非常复杂。ARM貌似是定长编码的。
cpu的内部处理并非你说的那样。
以Pentium Pro为例,处理流程大致为:首先从内存中将指令加载到l1 cache的指令缓存中,然后从L1 cache加载指令到double buffer(每个buffer为16byte),根据op code由instruction length decoder计算指令的长度,从double buffer中获得指令存放在IFETCH block中(1-16字节),再由IFETCH block送到instruction decoder进行解码。
更加详细的内容可以参考intel的手册,里面讲的非常之详细。
http://www.agner.org/optimize/microarchitecture.pdf
这么古老的芯,谁知道呢. 我只知道现在的芯片都有内部缓存, 一次取一批指令. 留在片内等着用.