小编Cir*_*lli的帖子

如何使用 se.py 在 gem5 系统调用模拟模式下编译和运行可执行文件?

有许多可能的错误和解决方法分散在不同的地方,任何人都可以提供至少一种详细的工作设置,以及确切的 gem5 和编译器版本,希望在 Ubuntu 上吗?

gem5

4
推荐指数
1
解决办法
3933
查看次数

如何在 gem5 中运行动态链接的可执行系统调用仿真模式 se.py?

如何解决:运行gem5在系统调用仿真SE模式时,“致命的内核太旧”?我设法在某些条件下运行了一个静态链接的 hello world。

但是,如果我尝试针对 stdlib 运行一个 ARM 动态链接的:

./out/common/gem5/build/ARM/gem5.opt ./gem5/gem5/configs/example/se.py -c ./a.out
Run Code Online (Sandbox Code Playgroud)

它失败了:

fatal: Unable to open dynamic executable's interpreter.
Run Code Online (Sandbox Code Playgroud)

如何让它找到解释器?希望不要在我的主机根目录上复制我的交叉工具链的解释器。

对于 x86_64,如果我使用我的本机编译器,它就可以工作,并且正如预期的strace那样,它使用本机解释器,但如果我使用交叉编译器,它就不起作用。

当前的常见问题解答说不能使用动态可执行文件:http : //gem5.org/Frequently_Asked_Questions但我不相信它,然后这些演示文稿提到了它:

但不是如何实际使用它。

QEMU 用户模式有这个-L选项。

在 gem5 49f96e7b77925837aa5bc84d4c3453ab5f07408e 中测试

https://www.mail-archive.com/gem5-users@gem5.org/msg15582.html

gem5

3
推荐指数
1
解决办法
1858
查看次数

如何运行 gem5 单元测试?

Gem5 在源代码树中有几个测试,并且有一些文档位于:http : //www.gem5.org/Regression_Tests但这些文档不是很清楚。

有哪些测试以及如何运行它们?

gem5

2
推荐指数
1
解决办法
1002
查看次数

与 LDR 相比,LDTR 等 ARM 非特权加载存储指令的应用是什么?

我今天第一次遇到 LDTR ARMv8 指令。

我在ARMv8 DB手册第C3.2.5节“非特权加载/存储”中阅读了它的描述,据我了解,它基本上允许EL1在EL0限制下进行内存访问。

该功能的应用是什么?

这是否意味着使用内核错误使内核将数据写入错误地址的攻击变得更加困难?

考虑到通常有多个进程同时运行,LDTR 如何知道要使用哪个页表转换?或者这些限制是否涉及与页表上指定的权限无关的其他类型的权限?

arm armv8

2
推荐指数
1
解决办法
671
查看次数

如何在 ARM aarch64 GCC 内联汇编中使用 32 位 w 寄存器?

我可以使用 64 位寄存器,例如:

#include <assert.h>
#include <inttypes.h>

int main(void) {
    uint64_t io = 1;
    __asm__ (
        "add %[io], %[io], 1;"
        : [io] "+r" (io)
        :
        :
    );
    assert(io == 2);
}
Run Code Online (Sandbox Code Playgroud)

它编译和反汇编:

aarch64-linux-gnu-gcc -ggdb3 -o main.out main.c
gdb-multiarch -batch -ex 'disassemble/rs main' main.out
Run Code Online (Sandbox Code Playgroud)

按预期到 64 位寄存器:

6           __asm__ (
   0x0000000000000744 <+16>:    a0 0f 40 f9     ldr     x0, [x29, #24]
   0x0000000000000748 <+20>:    00 04 00 91     add     x0, x0, #0x1
   0x000000000000074c <+24>:    a0 0f 00 f9     str     x0, [x29, #24]
Run Code Online (Sandbox Code Playgroud)

如何改用 …

gcc arm inline-assembly arm64

2
推荐指数
1
解决办法
623
查看次数

ARMv8汇编中的MOV,MOVZ,MOVN和MOVK有什么区别?

当我遇到MOVZ时,我正在使用反汇编程序,这有点困惑,因为我以前只使用过MOV。

当然,ARMv8 ISA手册解释了所有详细信息,并且MOV是其他三个别名的别名,具体取决于上下文,但是也许有人可以在此处提供一些基本原理,并提供具体示例以加快学习过程。

arm armv8

1
推荐指数
1
解决办法
2622
查看次数

如何在 gem5-20 中使用 m5 将其与我自己的 C++ 程序链接?

在 gem5-20 中,我可以使用以下命令构建 m5 实用程序。

\n
scons build/<arch>/out/m5\n
Run Code Online (Sandbox Code Playgroud)\n

但实际上我不知道如何将 M5 链接到我的 C++ 代码。

\n

本文档最后提到了一些必要的操作,但我希望得到更具体的指导。\n http://www.gem5.org/documentation/general_docs/m5ops/ \n有人做过吗,请帮助我。\ n谢谢!\n祝愿!

\n

gem5

1
推荐指数
1
解决办法
1530
查看次数

标签 统计

gem5 ×4

arm ×3

armv8 ×2

arm64 ×1

gcc ×1

inline-assembly ×1