c++에서 int a=10; 과 int aaa=10; 은 같은 사이즈를 선언하게
글쓴이: gyxor / 작성시간: 토, 2003/03/22 - 12:43오후
지정되는 용량이 각각 2바이트라는 문제는 떠나서요
변수명은 분명 a 와 aaa로서 다릅니다.
글자1개는 char 형으로써 시스템마다 다르겠지만 1바이트라고 한다면
aaa를 저장하기위해서는 3바이트의 공간이 필요한가요
그렇다면 변수명의 공간은 어디에 할당되는지 알고싶습니다.
어느분께서 가르쳐 주셨는데 변수명의 경우 컴파일후에는 컴파일러가
지정하는것으로 바뀌므로 사용자에게만 필요한것이고 .. 변수명을
따로 저장하지는 않는다고 하던데요
그렇다면 소스에 한해서만 변수명이 존재하는것인가요?
컴파일러의 자세한 변수취급방법이 알고싶습니다.
(이름이 동일한경우와 새로지정된 경우만을 분류해서 컴파일러 마음대로
적당한 공간에 할당을 하고 이름의 경우도 마찬가지인가요?)
어셈블리어를 공부하는 중인데요 c언어의 범위에서 답변이 어려우시면
어셈블리어로 들어가서 가르쳐주셔도 됩니다.
답변부탁드립니다.
Forums:
static 변수인 경우 symbol table에 이름과 번지(쉽게..)
static 변수인 경우 symbol table에 이름과 번지(쉽게..)가 저장된다고 보시면 됩니다.
automatic 변수인 경우 symbol table에 존재하지 않으며,
단지 stack base pointer (frame pointer) 로부터의 차이에 의해 표현될뿐입니다. 이것도 물론 단지 번지일 뿐입니다.
* 번지...라.. 써놓고 보니 참 묘한 단어이군요... 어렸을때부터 써오던 말인데... 왜 그럴까요.. 쿨럭..--`
---
http://coolengineer.com
...
변수명은 c/c++, assembly등의 소스코드에만 있고, 기계어에는 없습니다. 컴파일러가 소스코드의 변수를 위해, 적절한 메모리 공간을 할당하고, 기계어에서는 그 메모리의 주소를 사용하는 것이지요...
댓글 달기