|
다시 같은 종류의 질문을 올리셨군요.. 님이 원하는 것이 워떤 것인지.. 쩝쩝
PL이나 컴파일러 관련 책을 보세요.. 개인적인 경험으로는 특정 플랫폼의
메모리 사용에 대해서는 어셈블리를 공부하시는 것이 좋았던 것 같습니다.
그리고 메모리 상태를 보고 싶으시면 메모리를 덤프해보시구요..
빌더의 CPU 창을 이용하셔도 좋을 듯 싶네요
원시코드에서 실행파일로 옮겨가는 동안 한번 이상의 parsing 과정을 거치게 되고
링킹과정을 거쳐서 실행파일로 옮겨지게 됩니다. 그리고 메모리에 로드되어서
실제 실행이 되는데 이 중 변수와 메모리 할당 등의 과정은 컴파일러에
직접 연관되어 있고 메모리 로드되어 실행되는 과정은 운영체제에 연관되어 있는것입니다.
대부분 비슷 비슷한 컴파일러와 플랫폼에서 프로그램을 하긴 하지만 님의 말씀처럼
램에서의 작동현상으로 확인하시려한다면 매번 그 내용이 변할 것 같습니다.
요즘은 virtual로 대부분 동작이 되니까요. physical 메모리에 static address를 가지고
동작하는 컴퓨터는 책이나 특별한 경우에만 사용될 것 같은데...
프로그램에서 사용되는 변수를 컴파일러 입장에서 보자면 4가지의 속성을 가진다고
생각하시면 되겠읍니다.
변수의 이름, 변수의 값, 변수가 저장될 위치, 변수의 타입을 사용하여서 변수 하나를
표현하게 됩니다. 물론 컴파일러는 형식에 맞게 정의된 변수에 대한 여러가지
속성을 저장하게 됩니다. 이 과정에서 컴파일러가 어떤 장난을 치는 지 역시 알 수가 없죠..
제가 말씀드리고 싶은 것은, 님의 질문은 현실적으로 그 답을 구하기가 쉽지 않다는 것입니다.
책에서 기술한 정도의 내용에 대해서만 대답이 가능할 것 같습니다.
그런 의미의 질문이었다면 다시 한번 답변을 드리겠습니다.
그렇지 않은 의미의 질문이었다면 앞서 말씀드린 책을 보시거나..
컴파일러 구현에 관련한 것이라면 C의 전신이라는 BCPL에 대해 찾아보세요..
제가 알기로는 구문이 쉽고 컴파일러에 대해 자세한 정보가 있었던 것 같거든요.
|