【发布时间】:2017-05-28 05:57:41
【问题描述】:
理论上我有 Intel 8086,我想运行这条指令:
add [2000], 6 (or in AT&T syntax: addw $6, 2000)
我也知道:
- 2000 时的值为 2
- 在 3000 是寄存器 CS
- 6000 处是寄存器 DS
- 在 1000 是注册 IP
现在我想描述这个 CPU 中的机器周期:获取和执行。
理论上我知道它的样子:
获取:
- 从内存中获取指令
- 解码指令以确定操作
- 必要时从内存中获取数据
执行:
- 对数据执行操作
- 如果需要,将结果存储在内存中
但我不知道它在实际 CPU 寄存器和汇编代码中的外观。你能解释一下吗?
【问题讨论】:
-
您可能需要指定您的意思是字节添加还是单词添加。我已经武断地决定你要加一个词。
-
现实世界太复杂了,无法在 StackOverflow 上回答。您可以从Agner Fog's Web site 开始。 “英特尔、AMD 和威盛 CPU 的微架构”是一个好的开始。
-
@RaymondChen OP 特别说他有一个 8086。
-
一个真正的 8086 需要 23 个周期来执行该指令,假设它已经在预取队列中并且没有内存等待状态。我认为它在任何地方都没有记录 8086 在这 23 个周期中到底在做什么,但是读取和写入内存各有 4 个周期,计算有效地址至少有 6 个周期。
-
@fuz 但标题是 x86,它涵盖的处理器不仅仅是 8086。
标签: assembly cpu cpu-architecture cpu-registers