gpt4 book ai didi

assembly - 指令长度可变时的指令解码

转载 作者:行者123 更新时间:2023-12-04 01:43:05 25 4
gpt4 key购买 nike

以下是一些说明及其相应的编码:

55                      push   %ebp
89 e5 mov %esp,%ebp
83 ec 18 sub $0x18,%esp
a1 0c 9f 04 08 mov 0x8049f0c,%eax
85 c0 test %eax,%eax
74 12 je 80484b1 <frame_dummy+0x21>
b8 00 00 00 00 mov $0x0,%eax
85 c0 test %eax,%eax
74 09 je 80484b1 <frame_dummy+0x21>
c7 04 24 0c 9f 04 08 movl $0x8049f0c,(%esp)

今天的微处理器通常是 32 位或 64 位的,我猜它们通常以 4 字节或 8 字节 block 的形式从内存中读取数据。但是,指令可以具有可变长度。微处理器如何解码这些指令,为什么它们的长度不是固定的以便于执行?

最佳答案

你重新发明了RISC

嗯,您对经典 x86 的反对意见 (see CISC)这正是促使 RISC CPU 架构的设计者创建简单、对齐、固定大小的指令集架构的原因。

事实证明,如今的 x86 实际上确实将用户可见的 ISA 转换为更类似于 RISC 的微操作流,该流位于内部缓存中。

良好的观察力。

笔记。 1. 微操作只是一种可用的技术。在一般情况下,只要指令的解码和对齐发生在一个或多个流水线阶段,实际花费的时间不会被添加到平均指令执行时间中。如果分支预测正在工作并且流水线保持满状态,则解码和对齐指令所需的额外时间由与实际指令操作并行执行的逻辑来处理。今天的设计人员可以使用数百万个门,他们可以将大量逻辑用于解码复杂的 x86 ISA.2。您提到了内存总线宽度;事实证明,内存路径通常也大于 32 位或 64 位。架构字长仅指 ALU 和指针大小。内存和缓存接口(interface)的实际宽度通常是架构字大小的 2 倍或 4 倍。

关于assembly - 指令长度可变时的指令解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com