far pointer의 세그먼트와 옵셋을 구하는 법

생성일
May 6, 2019 08:59 AM
언어
C
분야
URL
Jun 18, 1993 11:08
 
안녕하세요? 김찬홍 안드레아입니다. 구조체 뿐만 아니라 그 어떤 데이터 형이라도 FP_SEG와 FP_OFF, 이 두 메크로를 쓰게되면 쉽게 구할 수 있습니다. 가령....
#include <stdio.h> #include <dos.h> void main(void) { struct { int i; char c; float f; } MyStruct; printf("MyStruct의 주소는 %06X:%06X입니다.\\n", FP_SEG(&MyStruct), FP_OFF(&MyStruct)); }
위와같은 풀그림을 만들 수 있습니다. 즉 FP_OFF나 FP_SEG에 원거리 포인터(far pointer)를 넘겨주게되면 각가 세그먼트와 옵셋을 구할 수 있습니다.
참고로 소형 데이터 모델에서 쓰더라도 케스트 연산자 없이 그냥 near포인터를 넘겨줘도 된다는 말입니다. C가 알아서 근거리 포인터를 원거리 포인터로 변환 해 주기 때문입니다. 참고로 제가 말씀드린 이 메크로는 dos.h에 정의되어 있습니다. 도움이 되셨으면 좋겠군요. 그럼.