Development/C
심볼 테이블 (Symbol Table)
linuxism
2012. 1. 31. 23:21
심볼 테이블 (Symbol Table)에 대해 알아보자.
우리는 코딩을 할 때 메모장, vc++ 등의
편집기나 컴파일 툴을 이용한다. number 라는 변수를 선언을 할때 다음과 같이 단순하게 처리한다.
int number;
우리는 number라는 int형 변수를 선언하는
것이지만, 컴퓨터는 숫자로만 기억한다. number라는
이름을 기억하는 것이 아니다. 우리가 사용하는 number라는 이름과 매칭을 시키기 위해 컴파일러는 심볼 테이블이라는 것을 생성한다.
다음 변수를 선언한다면, 심볼 테이블을 어떤식으로 만드는지 간단하게
살펴보자.
int number;
long sum;
변수 number와 변수 sum을 선언을 하면 심볼 테이블은 다음과 같이 만들어진다.
심볼테이블은 주소기반으로 한다. 변수가 선언되면 테이블을 생성하여 변수의 타입과 이름, 주소를 생성한다. 그리고 변수에 초기화를 하면 심볼 테이블에서 변수를 찾아 해당 주소에 값을 넣는다. 심볼 테이블은 컴파일러가 생성하고 컴파일이 끝이 나면 사라진다.
다음은 주소값에 할당되어지는 메모리를 나타낸다.
int 형은 4바이트이므로 주소가 0x0023ff7c 에서 0x0023ff7f 까지 할당된다. long 형도 4바이트이므로 0x0012ff78 에서 0x0012ff7b 까지 할당된다. 주소값은 시스템에 따라 달라질 수 있으므로 신경쓰지 않아도 된다. 개념만 이해하자.