1. 레지스터(register)
앞서 언급했던 CPU를 구성하는 네 가지 요소(CU, ALU, 레지스터, 클록)에서
프로그래머는 레지스터에 대해 반드시 알고 있어야 한다.
프로그램은 레지스터를 이용해 데이터를 처리하기 때문이다.
다음은 *어셈블리어로 작성된 프로그램의 일부다.
*어셈블리어(assmebly language): 전기 신호인 기계어에 기능을 의미하는 **니모닉을 대응시킨 것.
기계어와 어셈블리어는 기본적으로 1 대 1 대응이다.
참고로 어셈블리어를 기계어로 변환하는 작업을 어셈블(assemble),
그 반대의 작업을 디스어셈블(disassemble)이라 한다.
**니모닉(mnemonic): 인간이 기억하기 쉬운 형태로 이름을 나타내는 기호.
add는 더한다는 의미를 나타낸 니모닉이라 할 수 있다.
mov eax, dword ptr[ebp-8] 메모리에서 eax로 값을 복사한다.
add eax, dword ptr[ebp-0ch] eax의 값과 메모리의 값을 더해 eax에 저장한다.
mov dword ptr [ebp-4], eax eax의 값을 메모리에 저장한다.
종류 |
기능 |
어큐뮬레이터(accumulator) |
연산의 대상 또는 연산 후의 데이터를 저장한다. |
플래그 레지스터(flag register) |
연산 후 CPU의 상태를 저장한다. |
프로그램 카운터(PC, Program Counter) |
다음 실행할 명령어의 주소를 저장한다. |
베이스 레지스터(base register) |
데이터용 메모리 영역의 시작 주소를 저장한다. |
인덱스 레지스터(index register) |
베이스 레지스터를 기준으로 한 상대 주소를 저장한다. |
범용 레지스터(general register) |
임시 데이터를 저장한다. |
명령어 레지스터(instruction register) |
명령어 저장. 프로그래머는 이 레지스터를 읽고 쓰지 않고, CPU가 내부적으로 사용한다. |
스택 레지스터(stack register) |
스택 영역의 시작 주소를 저장한다. |
'Programming > Basis' 카테고리의 다른 글
비트 연산 (0) | 2019.03.04 |
---|---|
컴퓨터가 2진수를 사용하는 이유 (0) | 2019.03.03 |
CPU가 수행하는 작업 (0) | 2019.02.27 |
조건 분기와 함수 호출 (0) | 2019.02.27 |
프로그램의 작동 원리와 CPU (1) | 2019.02.26 |