Gem5 如何接受和解码来自用户的可执行文件?

How does Gem5 accept and decode executables from user?

例如:

/home/gem5/build/X86/gem5.opt --debug-flags=TLB,Cache /home/gem5/configs/example/se.py --cpu-type=DerivO3CPU --caches --mem-type=SimpleMemory -I 10000 -c out --options="1 in_16.txt out.txt" >> test2.txt

Gem5 的 SE CLI 中的粗体部分显示了我对它的输入。 Gem5到底是如何处理这个并得到要模拟的指令的呢?我应该为此查看哪些文件?据我所知,没有教程提到这个。

out 是常规 ELF userland executable,例如一个 C 你好世界,就像你 运行 在你的 Linux 主机上一样。

动态链接可执行文件的用法描述于:How to run a dynamically linked executable syscall emulation mode se.py in gem5? 所以通常静态链接更容易。

gem5解析ELF格式,将内存放到正确的位置,将PC放到正确的位置,开始模拟,just like the exec syscall of the Linux kernel would.

几个运行可用的例子are available here