gpt4 book ai didi

c++ - 获取寄存器/缓存中的当前值?

转载 作者:行者123 更新时间:2023-11-30 04:16:56 25 4
gpt4 key购买 nike

有什么方法(在 ASM/C/C++ 中)能够查询缓存中内存地址的内容,甚至获取寄存器中的当前值?

这会像海森堡原理一样有效吗?尝试从寄存器中检索值的代码可能会导致寄存器被卸载?

最佳答案

大多数处理器中都没有“从缓存中读取值”的标准指令。可以推测现代处理器能够出于测试目的读/写缓存内容,但如果有这样的指令,它们不会被公开描述,并且在使用它们时可能需要小心以避免干扰实际代码的执行。读取任何内存都可能会影响您要检查的缓存行中的内容。

寄存器值需要相当仔细地注意您如何编写代码,并且通常几乎不可能在不影响某处某处的情况下存储所有寄存器值,尽管您可以通过使用“推送”类型指令来存储在大多数处理器中非常接近堆栈上的值。一旦值被“保存”,就可以使用常规内存读取指令获取它们,并且由于值已经存储起来,您可以(几乎)使用任何寄存器来完成其余代码。

编辑:由于现在指定了处理器类型:在 32 位模式的 x86 处理器上,可以使用 PUSHA 将所有寄存器压入堆栈(包括列表中间的 ESP 的原始值)。但是,对于 x86-64,您必须为每个寄存器使用单独的 PUSH 指令。但这样做仍然是可行的。

我不熟悉英特尔检查缓存内容的任何说明。

关于c++ - 获取寄存器/缓存中的当前值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437382/

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