如何查看指令流水线?

逆向工程 机器码
2021-07-05 08:29:55

指令流水线用于通过将指令分成几个步骤以并行方式执行指令。当我在调试器中暂停执行时,我只能看到 eip 寄存器的位置,而不能看到当前的流水线状态。有没有办法查到?

1个回答

不,调试器按顺序查看代码,而 cpu 可以在代码执行之前即时重新排序代码,甚至一次执行多条指令。即使对于像 Bochs 这样的模拟器也是如此。另一方面,Simics 可能会实现更符合现实的东西,但我对此表示怀疑。

本质上,管道应该对程序员透明。就执行而言,它的功能应该与单周期实现相同,即使性能会有很大不同。

如果您想查看通过管道传递不同指令的效果,您需要的是分析器。

如果您想要一个工具来分析整个管道中 uOP 的进度,请寻找类似Marss86 之类的东西,它可以模拟到 uOp 级别,并允许您至少查看管道内部的架构。模拟。请注意,x86 管道有多种实现方式,您选择的模拟器可能会也可能不会实现您打算针对的确切目标。