gem5 - 除了主 ELF 可执行文件外,如何从命令行预加载 gem5 中给定原始字节的内存?
问题描述
在执行任何指令之前模拟开始时,我需要立即以给定的方式设置内存。
我知道这本质上是 ELF 加载器加载主可执行文件的操作,但尝试fs.py --kernel
多次传递似乎没有效果。
我可以尝试使用链接器脚本将这些数据破解到我的邮件 ELF 可执行文件中,但如果我可以避免这种情况并仅在 CLI 上提供原始字节,或者提供要加载的原始二进制文件会更方便给定的地址。
例如,QEMU使用-device loader
.
解决方案
在 gem5 f5f9ca46258ac2ded8f3402e5d271a18f8400183(2020 年 4 月)中测试,我可以通过以下方式实现:
configs/example/fs.py \
--param 'system.workload.extras = "mydata.raw"' \
--param 'system.workload.extras_addrs = 0x83000000' \
其中mydata.raw
包含要加载的原始数据,并且0x83000000
是要加载到的基本物理地址。
这两个参数都是数组,因此您可以加载多个原始二进制文件,例如:
configs/example/fs.py \
--param 'system.workload.extras = ["mydata.raw", "mydata2.raw"]' \
--param 'system.workload.extras_addrs = [0x83000000, 0x84000000]' \
例如,这可用于将信息传递给裸机可执行文件。例如,这可用于实现 C 程序的裸机命令行参数。
推荐阅读
- java - 如何将对象列表转换为Java中的整数列表?
- google-cloud-platform - 如何识别 cloudbuild 子任务
- powerbi - Power Query 数据加载:大型数据集导致“未找到表达式.错误列”
- javascript - Reactstrap Collapse 在 React 组件中不起作用
- jquery - 如何防止双击键码9,即在jquery中按tab键
- javascript - 使用Mongo find javascript时如何使用部分匹配?
- sql - Oracle SQL 内连接不返回具有空值的记录
- python - PYTHON - 如何根据分隔符将一列分成两列
- operators - 'true and (true or false) and false' 的答案应该是什么?
- maven - 在 Mac 中为 Catolina 或更高版本设置 maven (mvn) 的环境变量路径