본문 바로가기
Program

[Programming] (윈도우 시스템 프로그래밍) Windows 32bit 와 64bit

by snwo 2020. 8. 12.

WIN32 vs WIN64

64bit 와 32bit 구분법

  • 한번에 송수신 가능한 데이터 크기 (BUS)
  • CPU 에서 처리 가능한 명령어의 크기 (Register 의 크기)

32bit -> 64bit 의 특징

  • 프로그램으로 표현할 수 있는 범위의 증가
  • 활용 가능한 메모리의 확장 (메모리에서 접근할 수 있는 범위 증가)

32bit 시스템에서는 포인터가 32bit 크기이고, 2^32-1 만큼 표현할 수 있다.

64bit 시스템에서는 포인터가 64bit 크기이고, 2^64-1 만큼 표현할 수 있다.

 

! 내컴퓨터 비트수 확인

제어판에 시스템에서 확인할 수 있다 !

프로그래머 입장에서 64bit 특징

활용 가능한 메모리가 50byte 라고 가정해보자.
(프로그램을 실행할때 할당하는 메모리는 고려하지 않는다.)
 example 

int _tmain(void){
    TCHAR str[100]; //100 byte
    _tscanf(_T("%s"),str);
    _tprintf(_T("%s"),str);
    return 0;
}
-----------------------
int _tmain(void){
    TCHAR ch;
    do
    {
    _tscanf(_T("%c"),&ch);
    _tprintf(_T("%c"),ch);
    }while(ch!='\n');
    return 0;
}

위 두 프로그램소스를 비교해보자. 첫번째 프로그램을 보면 메모리가 50byte 밖에 사용을 못하는데 100byte 를 할당하고 한번에 입력을 받는다 하면 프로그램이 돌아가지않는다.
반면에 두번째 프로그램에서는 1byte 만을 사용하여 개행문자를 만날때까지 1byte 씩 입력을 받고 출력해준다.

일반적으로 desktop 에서 프로그래밍 할 때는 문제가 되지 않지만, 임베디드 시스템에서는 메모리가 지극히 제한적이기때문에 이러한 문제들을 고민하기도 한다. 잘 와닿지 않지만 개발자로서 이해를 하고 있어야한다.

 

#윤성우 윈도우 시스템 프로그래밍을 BASE로 제작되었습니다.