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

发布于 2021-11-19 07:11:44 字数 175 浏览 721 评论 3

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

奢华的一滴泪 2021-11-23 09:25:31

x86的机器码是变长编码的,非常复杂。ARM貌似是定长编码的。

看透却不说透 2021-11-22 08:02:29

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

坐在坟头思考人生 2021-11-20 07:43:56

这么古老的芯,谁知道呢. 我只知道现在的芯片都有内部缓存, 一次取一批指令. 留在片内等着用.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文