首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >gem5中的伪指令是什么?

gem5中的伪指令是什么?
EN

Stack Overflow用户
提问于 2020-08-19 05:26:56
回答 1查看 806关注 0票数 2

所以,我看到了gem5中的一些模拟是如何实现的,更具体地说,我是在看PIMSim (https://github.com/vineodd/PIMSim)。我看到他们为x86架构实现了一些伪指令。我见过这些伪指令只在全系统模式下使用.为此,他们修改了以下文件:

  • 包括/gem5 5/m5ops.h
  • util/m5/m5op_x86.S
  • src/arch/x86/isa/解码器/2_字节_opcodes.isa
  • src/sim/pseudo_inst.hh(cc)

我已经理解了实现自定义伪指令所必需的更改,但我不理解的是它们是什么以及它们是如何使用的。我在这些文件之外找不到任何地方,这个函数被调用。有什么帮助吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-19 06:39:03

伪操作是从客户内部进行魔术模拟操作的方法,这种技术通常称为来宾工具。

它们可以作为下列两种方式使用/实现:

  • 放置在实际ISA的未使用编码空间中的神奇指令 我认为这始终是启用的,除了在KVM中,主机CPU接管和只是崩溃,如果看到这些未知的指令。
  • 访问魔法内存地址。这是根据Python配置/启用的,System.py包含: m5ops_base = Param.Addr(如果buildEnv‘’TARGET_ISA‘== 'x86’x86 0,“用于内存映射的m5ops的64 64KiB范围的基。设置为”“禁用”)。
  • ARM 半托管:一些定制的半主机操作最近被连接到m5ops。在一些m5ops和一些标准化的半托管操作之间有一些重叠是没有价值的,比如退出模拟器。

其中一些最常用的m5ops是:

  • m5 exit:退出模拟器
  • m5 checkpoint:带一个检查点
  • m5 dumpstats:转储统计数据
  • m5 resetstats:去掉统计量,重新开始计数下一个m5 dumpstats
  • m5 readfile:读取主机fs.py --script选项内容的值,对在Linux引导检查点之后运行不同的工作负载非常有用

m5ops很有用,因为通常很难确定何时要以其他方式执行上述操作,例如:在Linux完成引导时执行一些操作。例如,要从模拟器中天真地做这件事,你需要事先知道会发生什么。您可能会在检查PC是否匹配某个地址(例如,Linux panic检查)方面出现麻烦,但这有点困难。

还有一个树内m5工具,您可以交叉编译,并将其放在完整的系统客户机中,以公开来自可执行CLI接口的神奇指令。

但是,您也可以在二进制文件中对它们进行硬编码,以便在需要时获得更精确的结果,例如在X86中进行硬编码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define LKMC_M5OPS_CHECKPOINT __asm__ __volatile__ (".word 0x040F; .word 0x0043;" : : "D" (0), "S" (0) :)
#define LKMC_M5OPS_DUMPSTATS  __asm__ __volatile__ (".word 0x040F; .word 0x0041;" : : "D" (0), "S" (0) :)

在:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/4f82f79be7b0717c12924f4c9b7c4f46f8f18e2f/lkmc/m5ops.h中有更多的硬代码示例,或者您也可以从主线树中更好、更费力地使用它们,如

更多的信息也可以在:https://cirosantilli.com/linux-kernel-module-cheat/#m5ops上找到。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63488050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文