디버그 모드에서 디스어셈블리 창을 띄울 수 있다.
어셈블리어 한 줄이 CPU instruction 한 개와 일치한다고 보면 된다.
프로그래밍을 단순하게 생각하면
적절한 데이터를 저장하고 가공하는 것
데이터 + 로직
그 중에서도 가장 빈번하게 사용되는 정수에 대해서 알아봅시다.
타입 이름;
타입 이름 = 초기값;
section.bss와 같은 건 C++에서는 알아서 이리저리 옮겨준다.
// 0이 아닌 초기화 값이 있으면 .data 영역
// 초기값이 0이거나, 초기값이 없는 변수라면 .bss 영역
int hp = 100;
(signed) char a; // 1바이트
(signed) short b; // 2바이트
(signed) int c; // 4바이트
(signed) __int64 d; // 8바이트 (long long)
unsigned char ua;
unsigned short ub;
unsigned int uc;
unsigned __int64 ud;
귀찮은데 그냥 대충 4바이트로 가면 안될까?
-> 콘솔/모바일 게임 -> 메모리가 늘 부족합니다.
-> 온라인 게임 -> 수많은 유저들에게 수시로 정보를 보내야 하므로, 자료형의 크기를 잘 정해야 함.
참고) 이론적으로 양수만 존재할 수 있는 데이터 unsigned
무조건 unsigned를 사용할지 의견이 갈림
정수 오버플로우
b = 32767;
b = b + 1;
정수 언더플로우
ub = 0;
ub = ub - 1;