2017-04-08 2 views
0

다음 이미지에서 볼 수 있듯이 프로그램 (이 경우 program1과 program 2)은 실행 중에 메모리에 매핑됩니다. 그래서 어셈블리 코드를 보면, program1/2와 StaticLib 사이에 boundary을 말할 수있는 단서가 있습니까?메모리에서 섹션이 프로그램 또는 정적 라이브러리에서 온다고 어떻게 말할 수 있습니까?

감사합니다,

enter image description here

+4

일반적으로 아니요. 일단 연결되면 잘 모른다. – Jester

+0

이 다이어그램은 완전히 무의미합니다. 뭔가 "staticlib"하지만 개체 파일로 표시됩니다. 예, 그렇게 할 수는 있지만 일반적으로 완료되지 않습니다. 낭비적인 접근 방식이기 때문입니다. 오브젝트 파일이 메모리에 상주하지 않습니다. 오브젝트 파일은 실행 파일 (또는 공유 라이브러리)로 링크됩니다. 이것은 혼란스러운 Gee-Wiz 다이어그램처럼 보입니다. – user3344003

답변

-1

는 IIRC 그것은 OS와 파일 형식에 따라 달라집니다. Windows에서
은 정적 라이브러리 함수는 일반적으로 (함수의 실제 주소를 포함) 주소

@xyz: jmp RealAddress 

call @xyz 

에 의해 참조됩니다.
일반적으로이 파일에 JMP이있는 영역이 있습니다. 그리고 그 모든 JMP 대상은 링크 된 라이브러리의 일부입니다.