可以在simics中看到smbase吗?

Is it possible to see smbase in simics?

向我展示了如何在 SMM 中查看内容。我注意到 Simics 显示了其他通常“隐藏”的寄存器,例如段描述符影子值,它们只能间接更新。那么是否可以在Simics中看到“smbase”寄存器?

首先,您可以使用 apropos 命令(简称 a)搜索特定字符串的加载配置。由于 smbase 可能通过属性公开,因此它看起来像 a -a smbase。如果配置中有任何“smbase”,您会看到它。

我加载了 QSP-x86 Firststeps 平台并在表单上获得了几次点击

<cpu-class>.msr_ia32_smbase

此外,一般来说,它有助于了解某个事物的上下文。这样 smbase 就是 MSR 的“一部分”。

要读取一个MSR,目前需要在处理器上使用接口调用。 “%”运算符读取当前处理器上的命名寄存器。调用 iface 检查任何处理器对象,并适用于仅具有数字的 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。通常,按数字查找内容更可靠。 Esp 因为许多 MSR 在当前设置的 Simics 模型中只有数字。