CPU는 I/O 버스를 통해서 데이터를 외부로 전송하기도 하고, CPU 내부로 수신하기도 한다. 이때 한 번에 전송 및 수신할 수 있는 데이터의 크기에 따라서 32비트 시스템과 64비트 시스템이 나뉘게 된다.
즉 CPU가 버스를 통해서 한 번에 전송 및 수신할 수 있는 데이터의 크기가 32비트면 32비트 컴퓨터, 64비트면 64비트 컴퓨터가 된다.
또 하나의 기준은 데이터 처리능력이다. CPU는 외부로부터 들어오는 데이터를 처리해야 하는데, 32비트 컴퓨터는 한 번에 32비트 데이터를, 64비트 컴퓨터는 한 번에 64비트 데이터를 처리할 수 있다.
"한 번에 송·수신 할 수 있는 데이터 크기와 한 번에 처리할 수 있는 데이터 크기를 기준으로 32비트 컴퓨터와 64비트 컴퓨터를 구분 짓는다."
32비트 : int, long, 포인터 모두 4바이트
64비트 :
운영체제 | 모델 | char | short | int | long | 포인터 |
Windows | LLP64 | 1바이트 | 2바이트 | 4바이트 | 4바이트 | 8바이트 |
UNIX | LP64 | 1바이트 | 2바이트 | 4바이트 | 8바이트 | 8바이트 |
"64비트 시스템에서는 포인터가 지니고 있는 주소값을 4바이트 정수형으로 형 변환하지 말자"
Windows 스타일 자료형
WINDOWS 자료형 | 의미 | 정의 형태 |
BOOL | Boolean variable | typedef int BOOL |
DWORD | 32-bit unsigned integer | typedef unsigned long DWORD |
DWORD32 | 32-bit unsigned integer | typedef unsigned int DWORD32 |
DWORD64 | 64-bit unsigned integer | typedef unsigned _int64 DWORD64 |
INT | 32-bit signed integer | typedef int INT |
INT32 | 32-bit signed integer | typedef signed int INT32 |
INT64 | 64-bit signed integer | typedef signed _int64 INT64 |
LONG | 32-bit signed integer | typedef long LONG |
LONG32 | 32-bit signed integer | typedef signed int LONG32 |
LONG64 | 64-bit signed integer | typedef signed _int64 LONG64 |
UINT | Unsigned INT | typedef unsigned int UINT |
UINT32 | Unsigned INT32 | typedef unsigned int UINT32 |
UINT64 | Unsigned INT64 | typedef unsigned _int64 UINT64 |
ULONG | Unsigned LONG | typedef unsigned int ULONG |
ULONG32 | Unsigned LONG32 | typedef unsigned int ULONG32 |
ULONG64 | Unsigned LONG64 | typedef unsigned _int64 ULONG64 |
[기본 자료형에 대한 마이크로소프트의 정의]
WINDOWS 자료형 | 의미 | 정의 형태 |
PINT | INT32에 대한 포인터 | typedef int* PINT |
PINT32 | INT32에 대한 포인터 | typedef signed int* PINT32 |
PINT64 | INT64에 대한 포인터 | typedef signed _int64* PINT64 |
PLONG | LONG에 대한 포인터 | typedef LONG* PLONG |
PLONG32 | LONG32에 대한 포인터 | typedef signed int* PLONG32 |
PLONG64 | LONG64에 대한 포인터 | typedef signed _int64* PLONG64 |
PUINT | UINT에 대한 포인터 | typedef unsigned int* PUINT |
PUINT32 | UINT32에 대한 포인터 | typedef unsigned int* PUINT32 |
PUINT64 | UINT64에 대한 포인터 | typedef unsigned _int64* PUINT64 |
PULONG | ULONG에 대한 포인터 | typedef ULONG* PULONG |
PULONG32 | ULONG32에 대한 포인터 | typedef unsigned int* PULONG32 |
PULONG64 | ULONG64에 대한 포인터 | typedef unsigned _int64* PULONG64 |
[포인터에 대한 Windows 정의]
이것만은 알고 갑시다
1. 64비트 시스템과 32비트 시스템의 구조적 차이
64비트 시스템과 32비트 시스템을 구분 짓는 기준 두가지는 "한 번에 송/수신 할 수 있는 데이터의 크기" 와 "한 번에 처리할 수 있는 데이터의 크기"이다.
2. 주소값 표현에 사용되는 바이트 수가 지니는 의미
프로그래머 관점에서 64비트 시스템은 주소를 표현하는 데 64비트를 활용한다는 데 초점이 맞춰진다. 64비트 시스템은 한 번에 처리할 수 있는 데이터가 64비트이므로, 주소값을 표현하는 데도 64비트를 활용한다.
3. GetLastError()
이 함수를 통해 오류의 원인을 알 수 있다. MSDN 참고.
05.3 프로세스의 생성 (CreateProcess) (0) | 2020.04.05 |
---|---|
05.2 프로세스의 스케줄링과 상태 변화, 컨텍스트 스위칭 (0) | 2020.04.05 |
05.1 프로세스(Process)의 이해 (0) | 2020.04.05 |
00. RISC vs CISC (0) | 2020.03.18 |
02. 아스키코드 vs 유니코드 (0) | 2020.03.17 |
댓글 영역