x86과 x64 레지스터는 보통 운영체제 윈도우의 패키지를 나타낼 때 자주 쓰여 익숙할 것이다.
x64는 64비트, x86은 32비트를 의미하며, 두 레지스터의 차이와 구분 방법에 대해 알아본다.
[x86과 x64의 차이점]
x86(32bit), x64(x86-64/64bit)
1. 레지스터의 처리값
CPU는 I/O 버스를 통해 데이터를 내/외부로 전송한다. 이때 32bit를 지원하는 CPU라면 한 번에 전송하는 데이터의 양이 32bit=1word이며, 64bit를 지원한다면 1word는 64bit가 된다.
2. RAM에서 표현할 수 있는 주소값.
윈도우가 시스템에 장착된 메모리를 사용하기 위해서는 모든 메모리 공간에 대한 주소 정보가 필요하다. 정확한 주소가 있어야만 원하는 위치에 제대로 접근할 수 있기 때문에 시스템은 처음 시작할 때 장착된 모든 메모리 공간의 주소 정보를 담은 지도를 만든다. 여기서 윈도우는 전달받은 지도를 토대로 움직이기 때문에 지도에 포함되지 못한 메모리 공간은 인식하지 못하게 된다.
이때, 시스템이 32bit라면, 지도로 만들 수 있는 메모리 공간의 개수도 32비트=4GB이게 되는 것이다. 결론은 32bit 컴퓨터는 4GB를 초과한 메모리 영역에는 참조할 수 있고, 32bit CPU역시 4GB의 RAM을 인식하지 못한다. 같은 원리로 64bit 컴퓨터와 CPU에 적용해 이해하면 차이 비교가 쉽다.
번외) Program Files VS Program Files(86x)
전자는 64비트만 지원하는 프로그램이 설치되는 디렉토리이고, 후자는 32비트만 지원되는 프로그램이 설치되는 곳이다.일반적으로 64bit 전용 프로그램은 그나마 32bit 전용으로 짤 때보다 속도 차이가 있다고 한다.
[구분 방법]
본인이 쓰고 있는 컴퓨터가 x84인지 x64인지 구분할 수 있는 방법에 대해 알아본다.
설정 > 시스템 > 정보 - "시스템 종류"
'System & Reversing > 필기' 카테고리의 다른 글
올리디버그(Ollydbg) 설치 및 사용법 (0) | 2023.03.16 |
---|---|
BOF(Buffer Overflow) 개요 및 동작 원리 (0) | 2023.03.16 |
아키텍처의 개념, 종류, 특징(+ CPU 아키텍처) (0) | 2023.03.11 |
gcc 컴파일러 (+ .so, .a, .o, .c, 비트 연산 내장 함수) (0) | 2023.03.10 |
dll 파일이란? (+ lib과의 차이점) (0) | 2023.03.10 |