2012-04-09 1 views
5

구조체를 가져와 eax과 같은 레지스터를 가져 오려고하는데 pt_regs 구조체를 사용하려하지만 컴파일 오류는 pt_regs에 해당 멤버가 없다는 것을 나타냅니다. eax.pt_regs 구조체에서 eax는 어디에 있습니까? 도끼 만 존재 함

그러나 ax 레지스터를 가져올 수 있습니다. 아무도 무슨 일이 일어나는지 말해 줄 수 있니?

나는 커널이 3.0.0 인 32 비트 우분투 리눅스를 사용하고 있습니다. 다시 감사합니다.

+0

XY 질문 : 어떻게 설정하려고합니까? –

답변

4

의 정의를 arch/x86/include/asm/ptrace.h에서 살펴보십시오.

공지 사항 #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

관련 문제