如何在gem5-20中使用m5将其与我自己的C++;节目?

如何在gem5-20中使用m5将其与我自己的C++;节目?,gem5,Gem5,在gem5-20中,我可以使用构建m5实用程序 scons build/<arch>/out/m5 scons构建/ 有人做过吗,请帮帮我。 谢谢 致以最良好的祝愿 在gem5 046645a4db646ec30cc36b0f5433114e8777dc44上,我可以执行以下操作: scons -C util/m5 build/x86/out/m5 gcc -static -I include -o main.out main.c util/m5/build/x86/out/lib

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

scons build/<arch>/out/m5
scons构建/
有人做过吗,请帮帮我。
谢谢

致以最良好的祝愿

在gem5 046645a4db646ec30cc36b0f5433114e8777dc44上,我可以执行以下操作:

scons -C util/m5 build/x86/out/m5
gcc -static -I include -o main.out main.c util/m5/build/x86/out/libm5.a
与:

main.c

#include <gem5/m5ops.h>

int main(void) {
    m5_exit(0);
}
官方示例也可在以下网址找到:with instructions at

这里是一个使用
m5_exit_addr
变量的,它使用m5op的内存版本而不是指令,也可以从KVM中使用,例如:

但在实践中,我通常对这项业务没有耐心,所以我只是行为不端,直接添加原始装配,哈哈哈,例如:

#if defined(__x86_64__)

#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) :)

#elif defined(__aarch64__)

#define LKMC_M5OPS_CHECKPOINT __asm__ __volatile__ ("mov x0, 0; mov x1, 0; .inst 0xFF000110 | (0x43 << 16);" : : : "x0", "x1")
#define LKMC_M5OPS_DUMPSTATS  __asm__ __volatile__ ("mov x0, 0; mov x1, 0; .inst 0xFF000110 | (0x41 << 16);" : : : "x0", "x1")
#如果已定义(uuux86_64_uuuuu)
#定义LKMC_M5OPS_检查点_uuuASM_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#定义LKMC_M5OPS_DUMPSTATS_uuuuASM_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#已定义的elif(aarch64)

#在gem5 046645A4DB646EC30CC36B0F543314E8777DC44上定义LKMC_M5OPS_检查点uuu asm_uuuuuuvolatile_uu(“mov x0,0;mov x1,0;”。安装0xFF000110(0x43),我可以做:

scons -C util/m5 build/x86/out/m5
gcc -static -I include -o main.out main.c util/m5/build/x86/out/libm5.a
与:

main.c

#include <gem5/m5ops.h>

int main(void) {
    m5_exit(0);
}
官方示例也可在以下网址找到:with instructions at

这里是一个使用
m5_exit_addr
变量的,它使用m5op的内存版本而不是指令,也可以从KVM中使用,例如:

但在实践中,我通常对这项业务没有耐心,所以我只是行为不端,直接添加原始装配,哈哈哈,例如:

#if defined(__x86_64__)

#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) :)

#elif defined(__aarch64__)

#define LKMC_M5OPS_CHECKPOINT __asm__ __volatile__ ("mov x0, 0; mov x1, 0; .inst 0xFF000110 | (0x43 << 16);" : : : "x0", "x1")
#define LKMC_M5OPS_DUMPSTATS  __asm__ __volatile__ ("mov x0, 0; mov x1, 0; .inst 0xFF000110 | (0x41 << 16);" : : : "x0", "x1")
#如果已定义(uuux86_64_uuuuu)
#定义LKMC_M5OPS_检查点_uuuASM_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#定义LKMC_M5OPS_DUMPSTATS_uuuuASM_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#已定义的elif(aarch64)
#定义LKMC_M5OPS_检查点_uuuasm_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvolatile_uuuuux0;mov x1,0;。指令0xFF000110(0x43