왜 내가 gdb에서 asm 소스를 디버깅 할 때 0x8048080 코드가 시작 진입 점으로 선택 되었습니까? 이것은 단지 상대 오프셋이며 실제 명령의 메모리로의 실제 오프셋이 아닙니다.주소의 의미 0x8048080
답변
이 0x8048080
를 해결하기 위해 특별한 의미가 없지만, 주소 0x08048000
하나가 : 자세한 내용은
후자의 주소는 기본 주소이며 ld
은 Linux/x86에서 첫 번째 PT_LOAD
세그먼트를 시작합니다. Linux/x86_64에서 기본값은 0x400000
이며 "사용자 지정"링커 스크립트를 사용하여 기본값을 변경할 수 있습니다. .text
섹션이 -Wl,-Ttext,0xNNNNNNNN
플래그로 시작하는 부분을 변경할 수도 있습니다.
이 0x08048000
에서 ld
시작 후에는 프로그램 헤더를위한 공간을 추가하고,에 따라 실행 파일의 나머지 부분을 연결하는 진행 내장 된 당신이 당신의 연결 라인에 -Wl,--verbose
에 전달하면 당신이 볼 수있는 링커 스크립트. 당신의 프로그램
은 프로그램 헤더의 크기는 항상 0x80
을 것으로 보인다, 그래서 당신의 .text
부분은 항상 0x8048080
에서 시작하지만 더 보편적 인 의미가 없습니다. 나는 사소한 int main() { return 0; }
프로그램을 연결할 때
, 나는 내가 사용하는 컴파일러에 따라 0x8048300
, 0x8048178
또는 0x8048360
에서 &_start == &.text
를 얻을.
0 x 8048080은 Linux ld 링커에서 사용되는 가상 메모리의 기본 진입 점입니다. 원하는대로 변경할 수 있습니다. http://eli.thegreenplace.net/2011/01/27/how-debuggers-work-part-2-breakpoints/
감사합니다. 매우 흥미로운 링크, 그냥 내가 무엇을 찾고 있었는지 :) –
이 답변은 잘못되었습니다. 'ld'는 미리 설정된 주소에 기본 진입 점을 두지 않습니다. –
- 1. 의미
- 2. 특정 주소의 Extern 변수
- 3. 주소의 기본 주소
- 4. IP 주소의 가용성 - Python
- 5. 이메일 주소의 전체 이름
- 6. IP 주소의 별명?
- 7. 링크 로컬 주소의 관련성?
- 8. 정적 클래스 호출은 "주소의 내용"을 의미합니다.
- 9. setContextClassLoader 의미
- 10. _dopr의 의미
- 11. FIN_WAIT1의 의미
- 12. 의미 'z'?
- 13. setContextClassLoader 의미
- 14. SEQUENCE_NEXT_HI_VALUE의 의미
- 15. 던지기 의미
- 16. 'pagerror.gif'의 의미?
- 17. 나는 의미
- 18. 의미 someClass
- 19. doublerule의 의미
- 20. 는 의미
- 21. : -516는 의미
- 22. 을 의미?
- 23. XPG6의 의미
- 24. 의미 객체
- 25. 서비스 주소의 부분을 분류하는 정규식?
- 26. 유효한 주소의 C++ 삭제 포인터
- 27. facebook 프록시 이메일 주소의 정규식
- 28. asp.net에는 전자 메일 주소의 유효성을 검사하는 기능이 있습니까?
- 29. WCF - 끝점 주소의 서비스가 주소의 프로토콜에 대해 사용할 수 없으므로 메시지를 전달할 수 없습니다.
- 30. 의미> CakePHP의에서
매우 흥미로운 세부 사항에 대해 감사드립니다 :) –