mov init_rsp(%rip),%rsp 에 대해..

송형주 2007.04.23 05:53 조회 수 : 5350 추천:135

저녁먹고, 집에가서 계속 어제 방식대로 해석하고 고민해봤는데... 도무지 이해가 안가서,
메뉴얼을 검색해보니,

64비트 모드에서는 'RIP-relative addressing'라는 새로운 addressing mode를 지원하고 있더군요..

AMD64 vol.1 - ch2.2.5 참조

RIP-relative addressing—that is, addressing relative to the 64-bit instruction pointer (also called program counter)—is available in 64-bit mode. The effective address is formed by adding the displacement to 'the 64-bit RIP of the next instruction.'

그러므로, 위의 해석에 비추어 볼때,

init_rsp(%rip) 는
[이 명령 다음의 rip가 가리키는 주소] + [rip 로부터의 init_rsp까지의 옵셋]
으로 해석하는 것이 맞을 듯 싶습니다.
(뭐, 원래 이렇게 해석을 했지만요??)

init_rsp(%rip)

init_rsp -> 0xFFFFFFFF80200190  : 가상주소 위치 (nm vmlinux 참조)
rip ->         0x200149 : mov init_rsp(%rip), %rsp 다음 명령의 주소
이 될 것입니다.
0xFFFFFFFF80200190은 가상주소이므로 0x200190으로 변경된다.

따라서 0x200190 - 0x200149 = 0x47 = 71.
그래서 mov (0x200149 + 71), %rsp 요렇게 해석이 될것입니다.
여기서 0x200149+71 은 init_rsp의 물리주소가 되겠죠.

따라서, rsp에는 init_rsp의 물리주소가 가리키는 8바이트 값이 들어가게 될것입니다.

참고로 .org 0x100은 이 코드 섹션의 위치 카운터(=ffffffff80200000)에서
0x100 만큼 떨어진 위치로 해석하는 것을 나타내 주는 것으로 생각됩니다.

[근거] objdump로 vmlinux를 덤프했을 때,

ffffffff8020005d:   00 01                   add    %al,(%rcx)
ffffffff8020005f:   10 00                   adc    %al,(%rax)
ffffffff80200061:   10 00                   adc    %al,(%rax)
    ...

ffffffff80200100 <startup_64>:  -->.org 0x100이 선언된 곳. 요런식으로 다음 위치가 ffffffff80200100 로 조정 되버렸음
ffffffff80200100:   48 31 c0                xor    %rax,%rax
ffffffff80200103:   48 0f ba e8 05          bts    $0x5,%rax


혹시, 제 생각이 틀렸다면 지적해주시기 바랍니다..

그럼 수고 ^^

아참..노트북 질렀습니다. x60으로요.
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2200
1645 오 이런;; 김종화 2007.04.14 4502
1644 Makefile를 보다가.. [1] file 김종화 2007.04.15 4982
1643 compressed/misc.c 의 end 라는 심볼에 대하여 지현구 2007.04.15 3427
1642 인터넷 공유기.. 박경태 2007.04.15 2893
1641 misc.c의 extern int end 변수에 대해서.... [9] file 송형주 2007.04.16 5423
1640 저번주 참석을 못하게 되었네요.. ㅜ.ㅜ [1] 김정수 2007.04.16 2971
1639 x86_64 컴파일 하신분?? [4] 송형주 2007.04.17 9805
1638 이번주 21일 불참입니다 [2] 김강년 2007.04.18 4632
1637 저도 21일 불참.. ㅡ.ㅡ; [2] 정필섭 2007.04.19 4433
1636 저희 이번주 스터디? [1] 변유준 2007.04.20 4539
1635 이번주는 휴강하도록 하죠... [2] 정찬성 2007.04.20 4613
1634 저도 불참하겠습니다. 변유준 2007.04.21 4632
1633 죄송 합니다. 제가 좀 많이 늦을꺼 같습니다. !!!!! 강형석 2007.04.21 3340
1632 Intel 아키텍쳐 매뉴얼 배송받는 방법 [6] 김정수 2007.04.22 5803
» mov init_rsp(%rip),%rsp 에 대해.. [3] 송형주 2007.04.23 5350
1630 AMD64 메뉴얼 제본 하실분들 댓글 남겨주세요~ [15] 남현우 2007.04.23 3776
1629 안녕하세요 [1] 이수연 2007.04.23 3473
1628 음... 저번주엔 모이질 않았군요. [1] 정필섭 2007.04.24 4666
1627 이름 매칭.. [9] 박경태 2007.04.25 3744
1626 AMD64 페이징 관련 한글 번역... [1] 박경태 2007.04.25 4002
XE Login