gpt4 book ai didi

assembly - 8086/8088 上的有效地址计算时间

转载 作者:行者123 更新时间:2023-12-04 20:00:23 38 4
gpt4 key购买 nike

我已经开始实现 8086/8088,目标是精确周期。我可以理解大多数指令的时钟周期数背后的原因,但是我必须说我对有效地址 (EA) 计算时间感到非常困惑。

更具体地说,为什么计算 BP + DI 或 BX + SI 需要 7 个周期,而计算 BP + SI 或 BX + DI 需要 8 个周期?

我可以只等待给定数量的周期,但我真的很想知道为什么会有这个 1 个周期的差异(以及总体上为什么需要这么多周期来进行任何 EA 计算,因为 EA 使用 ALU 来计算地址,并且寄存器之间的 ADD 只是 3 个周期)。

最佳答案

如果不对芯片进行逆向工程,我认为无法解释 [BP + SI] 和 [BP + DI] 之间的周期差异。 (请注意,有人已经或将要进行必要的逆向工程并非完全不可能,为了创建更精确的模拟器,Commodore 64 中的一些芯片已经这样做了。)但是解释起来相当容易为什么有效的地址计算通常需要这么长时间。原因是[BX + SI]的计算实际上是DS * 16 + BX + SI,所以它是两个相加,而不是一个。也是20位计算,ALU只有16位宽,所以计算物理地址的高20位还需要一个加法。这相当于三个寄存器与寄存器相加,总共花费 9 个周期,并假设 4 位移位是免费的,因此 EA 计算实际上比等效指令快。

关于assembly - 8086/8088 上的有效地址计算时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842659/

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