리눅스 커널 head.S에서요...
글쓴이: neu / 작성시간: 토, 2003/07/05 - 9:57오전
리눅스 커널 2.4.20의 linux/boot/head.S에서,
movl %eax, 0x000000
이라는 부분이 있는데, 여기를 절대주소 0번에 eax레지스터의 값을 집어 넣는다고 이해해야 하나요? 그리고 A20을 체크하는,
xorl %eax,%eax 1: incl %eax # check that A20 really IS enabled movl %eax,0x000000 # loop forever if it isn't cmpl %eax,0x100000 je 1b
라는 부분에서, 어떻게 위와같은 명령이 나오는지 궁금합니다
Forums:
A20이 enable되지 않았다면, 0-19번째 비트만 사용되기 때문에
A20이 enable되지 않았다면, 0-19번째 비트만 사용되기 때문에 1MB 단위로 서로 같습니다.
따라서 0번지에 어떤 값을 기록하고 1MB번지에 그 값을 읽었을 때, 서로 같은지 다른지 체크하는 것입니다.
만약 같다면, 우연히 같을 수가 있으므로 값을 증가시켜서 다시 테스트를 하게 됩니다.
A20이 enable되지 않았다면, 무한루프를 돌게 됩니다.
댓글 달기