【发布时间】:2014-07-20 16:46:48
【问题描述】:
假设我有这样的汇编指令:
cmp sp 100h
我尝试重现 x86 cpu 在执行期间执行的逻辑步骤。喜欢这个schema。 cpu 在哪里存储即时值100h?在此链接上使用了名为 accumulator (AC) 的东西。在 ALU 中执行比较之前,是否有通用寄存器 (EAX?) 或额外的寄存器来保存这些数据?
【问题讨论】:
-
它不存储在累加器中。 IIRC,CPU有一个临时寄存器存储它,同时进行比较。
-
临时寄存器不是通用EAX、EBX等之一吗?
-
立即值通常直接编码到指令中。
-
@jeff-mercado 好的,但我有 16 位字和
cmp sp 100h编码为 4 个字节。 CPU 每次内存访问仅获取 2 个字节。因此,我的 cpu 模拟器应该将中间数据存储在某个地方......我想像在真实硬件上那样做。 -
看它的方法是看到有一条线从指令寄存器或解码器直接到ALU。