Q&A

  • far external 에 대하여....
어제 질문을 했던 내용인데요. 답변이 없어서요. 다시 한번 올립니다...



한 프로그램을 보니까 Function 을 선언했는데.... 선언문 끝에 far external... 라고 기입을 한것을 보았습니다. 우선 도움말을 찾아봤는데... 쉽사리 이해가 잘 되지 않더군요. 혹시 이부분에 대해 아시는 분이 있으면 도움을 주시면 고맙겠습니다.

내용이 많으면 참고서적이나 참고사이트라도 알려주세요. 그럼... 이만... 꾸뻑!

1  COMMENTS
  • Profile
    TeamX 1999.12.20 11:25
    제가 알기로는 일종의 지시자라고 알고 있습니다. 명칭은 별로 중요하지 않고요(?)



    제가 아는걸 말씀드리자면..



    함수나 프로시져가 현재의 파일에는 포함되어 있지 않고 외부의 파일(*.obj, *.dll)에

    포함되어 있다. 그러니 컴파일러에게 그 함수나 프로시져는 외부에 있으니깐... 쓸데

    없이 에러내지 말고 링크할때나 DLL 을 로드할때 찾아라 그런 의미를 주는겁니다.



    "한마디로 소스내에는 없고 다른 외부파일에 있으니 외부파일에서 참고해라의 의미입니다."



    그리고 far 는 옛날 16비트시절에나 중요시 여기던 것입니다. 32비트에서는 신경쓰시지 않아도 됩니다. 간단히 설명을 하자면.....



    far 지시자는 함수나 프로시져가 멀리(?) 있으니 세그먼트와 주소(4바이트)를 모두 써서 함수나 프로시져를 호출하라는 의미입니다. 16비트가 원래 메모리가 그런구조라서 그렇습니다. 하지만 32비트에서는 이러나 저러나 주소가 항상 4바이트로 표현되기 때문에 far 라는 자시자는 의미가 없습니다. - 만약 16비트에서 far 라는 지시자를 쓰지 않으면 함수나 프로시져를 한세그먼트(64K)내에 있는걸로 보고 near 로 간주하기 때문에 안되었죠. near 호출은 2바이트가 들고 far 호출은 4바이트가 듭니다. 하지만 이런건 32비트에서는 의미가 없습니다. 메모리가 모조리 4바이트로 접근허기 때문입니다.



    하여튼 저의 기억이 맞기를 바랍니다^^;



    임형호 wrote:

    > 어제 질문을 했던 내용인데요. 답변이 없어서요. 다시 한번 올립니다...

    >

    > 한 프로그램을 보니까 Function 을 선언했는데.... 선언문 끝에 far external... 라고 기입을 한것을 보았습니다. 우선 도움말을 찾아봤는데... 쉽사리 이해가 잘 되지 않더군요. 혹시 이부분에 대해 아시는 분이 있으면 도움을 주시면 고맙겠습니다.

    > 내용이 많으면 참고서적이나 참고사이트라도 알려주세요. 그럼... 이만... 꾸뻑!