我已经在 Intel 8086 仿真器上工作了大约一个月。我决定开始计算周期以使仿真更准确,并与 PIT 正确同步。
每条指令使用的时钟周期在英特尔的用户手册中有详细说明,但我想知道它们是如何计算的。例如,我为XCHG mem8,reg8
指令推导出了以下步骤 - 根据手册,这需要 17 个时钟周期:
- 解码指令的第二个字节:+1 个周期;
- 将第一个操作数从内存转移到临时位置:+7 个周期;
- 将第二个操作数从寄存器转移到内存目的地:+8 个周期;
- 将第一个操作数从临时位置转移到寄存器目标:+1 个周期。
但我可能完全错了,因为我的推理似乎不适用于所有说明。例如,我无法理解为什么PUSH reg
指令需要 11 个时钟周期,而POP reg
指令只需要 8 个时钟周期。
那么,你能告诉我每条指令是如何花费时钟周期的,或者更确切地说是一种理解这些数字来自哪里的通用方法吗?
谢谢你。