현재 Robert Love의 'Linux 커널 개발'을 읽고 있는데이 어셈블리 비트가 무엇을하는지 이해하지 못합니다.리눅스 커널 개발
기본적으로 각 프로세스 커널 스택에는 struct thread_info
이 스택의 끝에 있습니다. 이제 x86 아키텍처에, 우리는 분명히 다음 어셈블리를 사용하여이 (가정 8킬로바이트 스택 크기)를 잡아 수
movl $-8192, %eax
andl %esp, %eax
그래서 기본적으로 AND 연산 0xffffe000에 의해 스택 포인터. 나는 여기서 무슨 일이 일어나고 있는지 혼란 스럽다. 나는 왜
%esp
의 최하위 13 비트를 마스킹하는 것이 구조체를 필요로하는지 보지 못한다. 나는 그것이 설명되면 멍청하다고 느낄 것이다. 그러나 그것은 나를 괴롭 히고있다.
감사합니다.
현재이 책을 읽고 있는데, 기본적인 질문이 있습니다 :'-8192'가'0xffffe000'이라는 것을 어떻게 아십니까? 어떻게 부정 수치가 CPU의 레지스터에 저장됩니까? –