2012-04-09 14 views
5

Próbuję użyć struktury pt_regs, aby uzyskać i ustawić rejestry, takie jak eax, ale błędy kompilacji informują mnie, że pt_regs nie ma takiego elementu eax.Gdzie jest eax w strukturze pt_regs? Obecna jest tylko siekiera.

Jednak jestem w stanie uzyskać rejestr ax. Czy ktoś może mi powiedzieć, co się dzieje?

Używam 32-bitowego systemu Linux Ubuntu z jądrem 3.0.0. Jeszcze raz dziękuję.

+0

Pytanie XY: jak próbujesz je zdobyć i ustawić? –

Odpowiedz

4

Spójrz na definicję struct pt_regs w arch/x86/include/asm/ptrace.h.

Ogłoszenie #ifndef __KERNEL__ rzeczy tam oznacza, że ​​definicja tej struktury jest inna dla trybu jądra i kodu trybu użytkownika.

Dla kodu jądra prawdopodobnie potrzebna jest wartość pt_regs::ax. Powinien zawierać wartość %eax w systemie 32-bitowym i %rax na 64-bitowym.

+0

dziękuję za wyjaśnienie tego! – user490895

+0

Masz rację w swoim ostatnim komentarzu. Zobacz [head_64.S] (http://elixir.free-electrons.com/linux/latest/source/arch/x86/kernel/head_64.S#L358). Oczywiście jest też wersja 32-bitowa o podobnej nazwie. – sherrellbc