2012-04-09 8 views
5

eaxのようなレジスタを取得して設定するのにpt_regs構造体を使用しようとしていますが、コンパイルエラーはpt_regsにこのようなメンバーがないと伝えますeaxpt_regs構造体のどこにeaxがありますか?唯一のaxが存在する

しかし、私はaxレジスタを取得することができます。誰が何が起こっているか教えていただけますか?

私は3.0.0カーネルの32ビットUbuntu Linuxを使用しています。ありがとうございました。

+0

XY質問:どうやって取得しようとしていますか? –

答えて

4

arch/x86/include/asm/ptrace.hstruct pt_regsの定義を見てみましょう。

お知らせが#ifndef __KERNEL__ものは、その構造体の定義は、カーネルモードとユーザーモードのコードのために異なることを意味します。

カーネルコードでは、おそらくpt_regs::axが必要な値です。 32ビットシステムでは%eax、64ビットシステムでは%raxの値を含める必要があります。

+0

それをクリアするための束に感謝! – user490895

+0

あなたの最後のコメントが正しいです。 [head_64.S](http://elixir.free-electrons.com/linux/latest/source/arch/x86/kernel/head_64.S#L358)を参照してください。もちろん、同様の名前の32ビットバージョンもあります。 – sherrellbc

関連する問題