3

「m5_dumpreset_stats()」と呼ばれる Gem5 オペレーションの関数を使用する C アプリケーションがあります。

そこで、次のことを行い、この関数のヘッダー ファイルをインクルードしました。

#include "../gem5-stable/util/m5/m5op.h"

次に、ソースファイルで関数を呼び出しました:

void foo()
{
   m5_dumpreset_stats(0,0);
   /* For loop */
   m5_dumpreset_stats(0,0);
}

私のプロジェクトをビルドするには、 Makefile を使用しています:

CC=arm-linux-gnueabi-gcc
CFLAGS=-g -c -Wall -O3 -mfpu=neon
LDFLAGS=-static

SOURCES=$ foo.c
OBJECTS=$(SOURCES:.c=.o)

EXECUTABLE=foo

all: $(TASKMAP) $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
$(CC) $(LDFLAGS) $(OBJECTS) -lm -o $@

.c.o:
    $(CC) $(CFLAGS) $< -lm -o $@

 clean: 
    rm -fr $(OBJECTS) $(EXECUTABLE)

私の最初の推測では、Makefile を使用してライブラリをリンクする必要がありますが、正直なところ、方法がわかりません。誰かがそれを行う正しい方法を教えてもらえますか?

PS : m5_dumpreset_stats(delay,period): シミュレーション統計を遅延ナノ秒でファイルに保存してリセットします。これを周期ナノ秒ごとに繰り返します。

4

3 に答える 3

2

ヘッダーは通常は検索されないディレクトリにあるため、ライブラリにも当てはまります。-lしたがって、ライブラリを参照するフラグと-L、検索する他のライブラリ ディレクトリを追加するフラグの 2 つが必要になります。

私のライブラリが" ../gem5-stable/util/m5 "にあるlibm5op.a だった場合、次のようにします。

$(CC) $(LDFLAGS) $(OBJECTS) -lm -L"../gem5-stable/util/m5" -lm5op -o $@

またはあなたの状況に適したものなど。

于 2016-08-14T18:09:17.770 に答える
0

gem5 20 更新された手順

gem5-20でのm5の使い方

アセンブリを直接ハードコードする

場合によっては、ハックしてアセンブリをインラインで追加する方が簡単な場合があります。例えば ​​on aarch64、あなたができる統計をダンプするには:

mov x0, #0; mov x1, #0; .inst 0xFF000110 | (0x41 << 16);

これらの手順の一部のリストはこちらから入手でき、自分で推測する方法はこちらで説明されています

于 2018-08-24T10:38:48.110 に答える