C++ lecture section1 [1/3]
데이터 기초
어셈블러(asembler) : =번역기.
비트(bit - binary digit) : 0 또는 1의 두가지 값만 가질 수 있는 측정 단위
바이트(Byte) : 여덟개의 비트로 구성된 데이터의 양을 나타내는 단위
- 음수를 나타낼 때는 2의 보수를 사용함
- 0x를 붙인 16진수를 유용하게 사용함
8 bit = 1 byte
16 bit = 2 byte = 1 word
32 bit = 4 byte = 2 word = 1 dword(double-word)
64 bit = 8 byte = 4 word = 1 qword(quad-word)
레지스터 기초
레지스터 : 데이터를 임시적으로 저장하는 역할
CPU 내에 있기 때문에 거리가 짧아 처리속도가 매우 빠름
- rax = 64비트 / eax = 32비트 / ax = 16비트 / ah, al = 8비트
mov 레지스터명, 값
: 레지스터에 값을 저장mov 레지스터1, 레지스터2
: 레지스터2에 저장되어있는 값을 레지스터1에 저장
변수와 레지스터
data
영역에는 초기화 된 데이터를 사용
[변수이름] [크기] [초기값]
- ex)
a db 0x11
,c dd 0x33333333
- db = 1, dw = 2, dd = 4, dq = 8 (바이트기준)
bss
영역에는 초기화되지 않은 데이터를 사용
[변수이름] [크기] [개수]
- ex)
e resb 10
,f resq 64
- resb = 1, resw = 2, resd = 4, resq = 8 (바이트기준)
data
영역과 bss
영역이 나뉘어져있는 이유 : 초기화되지 않은 변수는 초기값을 저장할 필요가 없으므로 실행파일의 크기가 작아짐
mov 레지스터 변수명
으로 사용시 변수의 주소값이 레지스터에 저장됨
mov 레지스터, [변수명]
으로 사용시 변수 자체의 값이 레지스터에 저장됨
- 단, 크기를 지정하지 않았을시 설정한 레지스터와 같은 크기만큼 읽어들임
- 원하는 크기만큼 읽고싶을 때는 레지스터 크기를 조절하는 방법을 사용할 수 있음
move [변수명], 크기지정 값
또는 move [변수명], 레지스터명
으로 변수에 값을 지정할 수 있음
ex) mov [a], byte 0x55
, mov [a], word 0x6666
, `mov [a], cl