# gcc 4.4.3 버전 기준
# intel, amd 64bit cpu에 해당
# 64bit 옵션으로 컴파일시
int : 4바이트
long : 8바이트
long long : 8바이트
# 32bit 옵션으로 컴파일시
int : 4바이트
long : 4바이트
long long : 8바이트
※ 현재 많은 사이트나 블로그에서 c언어를 64비트 옵션으로 컴파일시 과거 2바이트 레지스터 컴퓨터에서 int형이 2바이트 였던것 처럼, 64비트 cpu의 경우 레지스터 크기가 8바이트이기 때문에 int형이 8바이트라고 설명하고 있으나 이것은 잘못된 설명이다. (윈도우에서 쓰이는 c컴파일러의 경우는 확인하지 못하였다.)
실제로 gcc(4.4.3버전기준)에서 64비트로 컴파일 했을시 int는 4바이트로 취급되고 있다. 게다가 AMD64 아키텍쳐를 사용하는(인텔의 경우엔 아키텍쳐이름을 다르게 명명하고 있다) cpu의 경우 기본 오퍼랜드크기는 4바이트이다 (물론 기본 어드레스 크기는 8바이트이다.)
이러한 잘못된 정보를 확신하며 전달하고 있는 사이트가 많은 것이 정말 아쉽다. 컴퓨터분야에서 정확하게 알고 있다고 생각하는 사람들은 오히려 전혀 잘못알고 있는 경우가 많은것 같다. intel, amd, gcc 등의 메뉴얼들이 한글로 되어있다면 이런 현상이 조금은 줄지 않았을까...
고급 레벨 수준 이상으로 C언어를 정확하게 알려면, 결국에는 어떤 어셈블리어로 컴파일 되는지, 컴파일후 링킹과정은 어떻게 일어나는지 알아야 한다. 그렇지 않고 C언어를 C언어 만으로 이해하려고 한다면 이해를 하기위한 이해만 거듭할 일이 많아질 수도 있다.(정말 미련한 짓이다) 그리고 어셈블리어를 알게되면 컴퓨터 구조도 알게되어서 좋다.
댓글 없음:
댓글 쓰기