9

プログラムカウンタの内容を出力する C プログラムを書きたいと思いPCます。これは、ユーザー空間、アセンブリ、または特定のカーネル ルーチンを使用して実行できますか?

4

3 に答える 3

3

Cコード内にアセンブリブロックを挿入することで情報を取得できると思います。これは、コンパイラとプラットフォームのレジスタ セットに完全に依存します。私はこのようにしました:

int get_counter1()

{

    __asm__ ("lea (%rip), %eax ") ;
}

int get_counter2()

{

    int x = 0;
    __asm__ ("lea (%rip), %eax") ;
}

int main()

{

    printf("%x\n",get_counter1());
    printf("%x\n",get_counter2());
    return 0;
}

4004ce

4004e1

于 2013-08-21T06:59:09.380 に答える