这篇文章向我展示了如何在SMM中查看内容。我注意到Simics显示了其他通常"隐藏的"像段描述符阴影值这样的寄存器只能间接更新。那么有没有可能看到"smbase"用Simics注册?
要读取一个MSR,目前需要在处理器上使用接口调用。"%";操作符读取当前处理器上的命名寄存器。调用接口检查任何处理器对象,并且只针对有一个数字的msr工作。
使用在线帮助了解如何使用该接口。例如:
simics> @conf.board.mb.cpu0.core[0][0].iface.x86_msr.get_number("IA32_TSC_DEADLINE")
1760
simics> api-help x86_msr_interface_t
Help on API keyword "x86_msr_interface_t":
DESCRIPTION
SIM_INTERFACE(x86_msr) {
void (*register_handlers)(
conf_object_t *cpu,
int64 number,
x86_msr_getter_func_t getter,
lang_void *getter_data,
x86_msr_setter_func_t setter,
lang_void *setter_data,
...
添加检查命令在愿望列表中。
更新。
接口还提供了从数字到名称查找的功能。对于MSR 0x9E, IA32_SMBASE,在"客户端"上;在Public Simics中,查找名称会得到如下结果:
simics> @conf.board.mb.cpu0.core[0][0].iface.x86_msr.get_name(158)
'msr_ia32_smbase'
simics> @conf.board.mb.cpu0.core[0]0].iface.x86_msr.get_number("msr_ia32_smbase")
158
由于历史原因,寄存器被称为msr_ia32_smbase,而不是手册中的IA32_SMBASE。一般来说,按数字查找会更可靠一些。特别是因为许多msr在目前设置的Simics模型中只有数字。
首先,您可以使用适当的在加载的配置中搜索特定字符串。命令(短)。由于smbase很可能是通过属性暴露的,所以它看起来像a -a smbase
。如果有什么"smbase"在配置中,您将看到它。
我加载了QSP-x86 Firststeps平台,并在表单
上得到了几个结果<cpu-class>.msr_ia32_smbase
而且,一般来说,它有助于了解某件事的上下文。因此,smbase是"一部分"。MSR。