关于8086指令长度的疑惑,Help

leo-H 发布于 2013/10/19 12:18
阅读 787
收藏 0

8086的cpu是16位的,一次能取2个字节指令,但是有的指令是3个字节的,怎么办?是不是先取头2个字节,发现还需要一个字节,就再取2个字节,一共4个字节,其中前三个字节是正要执行的指令,但是如果这条指令是长跳转指令呢,多出来的那个最后一字节会不会被执行呢?

或者情况完全不是我想的这样?这个指令是怎么取得的呢?

加载中
0
泡不烂的凉粉
泡不烂的凉粉
这么古老的芯,谁知道呢. 我只知道现在的芯片都有内部缓存, 一次取一批指令. 留在片内等着用.
0
算法与编程之美
算法与编程之美

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

0
张亦俊
张亦俊
x86的机器码是变长编码的,非常复杂。ARM貌似是定长编码的。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部