프로그래밍 2013. 8. 4. 16:04

32bit cpu를 말합니다.

컴퓨터는 데이터를 저장하는 디바이스들이 여럿 있습니다. 잘 아시는 메모리(RAM) 하드, 등등. 

이는 계층 구조를 잘 이루고 있어서 각 계층에서 하는 역할이 있습니다. 이부분은 그냥 패스~

여기서는 cpu에 붙어서 기생? 하는 아주 작은 메모리 레지스터에 대한 이야기 입니다.

이러한 레지스터의 내용을 좀더 알기 위해서는 C언어가 아닌 어셈블리어를 이해해야 합니다. 어셈블리를 먼저 보신다면 반대. 어셈블리어는 대부분이 레지스터의 데이터를 조작하는 내용인데, 레지스터의 역할, 기능을 모르고서는 이해하기가 어렵죠 ㅠㅠ 이부분은 다음에 설명~

IA라고 했는데 intel architecture를 말하는 거에요. 32는 32비트 이다~ 그럼 요즘 64비트 컴퓨터가 많죠?

64비트 intel architecture는 ? IA64입니다. 컴퓨터 메모리는 저장되는 데이터가 여러개 이겠죠?  그런 데이터를 역할에 따라 저장되는 레지스터 종류가 있습니다. 

기본적인 프로그램 실행에 들어가는 레지스터에 대해 설명할게요

- Basic program execution registers -

이것은 다시 4개 그룹으로 나눕니다.

General purpose Register 32bit -8개

Segment Registers(16bit -6개)

Program Status and Control Registers(32bit -1개)

Instruction Pointer(32bit -1 개)

<Intel menual 참조>

General Purpose Register는 범용레지스터라고 해석이됩니다.  이 레지스터들은 32bit (4바이트)입니다.

보통 상수/주소등을 저장합니다.  이 레지스터들을 좀 자세히 보겠습니다. 

EAX : Accumulator for operands and results data

EBX : Pointer to data in the DS segment

ECX : Counter for string and loop operations

EDX : I/O pointer

이것들은 주로 산술연산(더하고,빼고,나누고) 에서 변수,상수값의 저장 용도로 쓰입니다. 

또 ECX는 반복문 의 카운터로 사용됩니다. 반복을 할 때마다 ECX의 값이 1씩 줄어듭니다. EAX는 함수의 리턴값을 저장합니다. win api들은 리턴값을 EAX에 저장합니다. EBX는 메모리 주소를 저장하기 위한 용도로 쓰입니다. EDX는 EAX와 같이 쓰이고 부호 확장명령에 쓰입니다. 큰 수의 곱셈 나눗셈의 연산이 이루어 질때 EAX와 같이 쓰입니다.


EBP : Pointer to data on the stack(in the SS segment)

ESI : source pointer for string operations

EDI : destination pointer for string operations

ESP : Stack pointer(in SS segment)

위의 4개는 주로 메모리 주소를 저장합니다.

ESP는 스택 메모리의 끝 주소를 가리킵니다. push, pop,call 은 ESP를 직접 조작한다. EBP는 스택 프레임의 시작 주소를 가리킵니다. EBP 레지스터는 현재 사용되는 스택 프레임이 소멸되지 않게 





'프로그래밍' 카테고리의 다른 글

git 명령어 및 이용  (0) 2014.03.23
Git 을 사용한 소스 버전관리  (0) 2014.03.17
프로세스와 메모리의 이야기  (0) 2013.08.04
이클립스 vim 플러그인  (0) 2012.12.08
이클립스 vim 플러그인  (0) 2012.12.01
//