MOV EAX, 5E1050 ; 가상주소 0x005E1050 를 EAX로.
XOR BYTE PTR DS:[EAX], 01
olly 디버거로 프로그램을 분석하던중 위와같은 어셈블리 코드를 보았습니다.
저기에서
DS:
는 왜 있어야 하고 무슨 역할을 하나요?
EAX 에 온전한 32비트 가상주소가 있으니까 그걸 참조하면 될것일터...
책에서는 세그먼트 : 오프셋 주소 지정방식은
옜날 시스템에서 사용했다고하는데
요즘의 일반적인 32비트 ELF, PE 들을 디스어셈블 해보면
여전히 저런식으로 DS:레지스터, CS:레지스터
이런 표현이 많이 있는걸 볼 수 있는데요...
인텔 x86 메뉴얼을 봐도 잘 모르겠고
위키피디아 설명을 봐도 왜 있어야하고 무슨 역할을 하는건지...
32비트 flat addressing 모델을 쓰는데...
"세그먼트를 참조하기 위한것이다" 라는 설명으로는 이해가 안가네요
조언부탁드립니다