티스토리 뷰
레지스터란?
레지스터 : CPU 내부에 있는 저장공간
*프로그램 실행 과정
1.보조기억장치인 하드디스크에 실행파일 보관
2.주기억장치인 RAM에 실행파일을 복사함.
3. RAM에 데이터를 중앙처리장치인 CPU 레지스터를 이용하여 복사해와서 처리.
32bit General-purpose Resgisters(32bit 범용 레지스터)
이름 |
명칭 |
해당 레지스터만의 기능 |
EAX |
누산기 |
함수의 리턴값을 저장 (EDX와 같이쓸땐 하위 4byte) |
EBX |
간접주소 지정자 |
간접 주소 지정. |
ECX |
반복카운터 |
0과 같을때까지 하나씩 감소시키면서 반복한다. ECX값이 감소하면서 0이 될때까지 반복함. 0 < ECX 0 < 3 0 < 2 0 < 1 0 < 0 |
EDX |
EAX 보조 |
4byte 이상의 값을 EAX와 나눠서 해결.(상위4byte) ex) 0x12127048860F9180 EDX = 12127048 (높은수 저장) EAX = 860F9180 (낮은수 저장) |
EBP |
Base Point |
스텍프레임에 기준점 주소를 저장. |
ESP |
Stack Point |
스텍프레임에 최상단 주소를 저장. 함수가 종료되면 EBP 위치로 이동되어 스텍프레임이 해제된다. |
ESI |
Source |
출발지 주소 저장. |
EDI |
Destination |
목적지 주소 저장. |
상태 레지스터 EFLAGS
EFLAGS 1 SET 0 CLEAR |
||
AF |
|
|
CF |
|
|
OF |
|
|
PF |
|
|
SF |
|
|
ZF |
Zero Flag |
산술연산의 결과가 0일때 SET 산술연산의 결과가 0이 아닐때 CLEAR ex) 2 * 2 = 4 ( ZF = CLEAR ) 5 * 0 =0 ( ZF = SET ) |
EIP = 다음 실행될 명령어의 주소를 담고 있는 레지스터
스텍프레임 : 어떤 절차(또는 함수)의 호출에 따라서 그와 관계되는 모든 데이터를 저장해 두는 스택 영역
16bit 레지스터: AX, BX,CX,DX ····
32bit 레지스터: EAX,EBX,ECX ····
64bit 레지스터: RAX,RBX,RCX ····
레지스터 공간을 쪼개서 사용 가능하다.
EAX (4byte) 를 2Byte만 사용할때는 AX로 표현
AX= 2Byte
AH,AL = 1byte
AH = 큰수(1byte)
AL = 작은수(1byte)
EBP, ESP --> 주소를 사용하기 때문에 쪼갤 수 없다.
데이터 형식
데이터 타입 |
사용 용도 |
BYTE |
부호 없는 1 byte |
WORD |
부호 없는 2 byte |
DWORD |
부호 없는 4 byte |
QWORD |
부호 없는 8 byte |
SBYTE |
부호 있는 1 byte |
SWORD |
부호 있는 2 byte |
SDWORD |
부호 있는 4 byte |
SQWORD |
부호 있는 8 byte |
부호있는(Sign) = S가 붙는다.
D = Double
Q = Quad
C언어와 차이점 : 정수,실수, 문자 개념없이 공간 크기만 맞으면 사용가능.
'Programming > Programming' 카테고리의 다른 글
[Tool] 리버싱툴 Ollydbg110 설정 (0) | 2015.08.07 |
---|---|
[어셈블리어] CALL 명령어 (0) | 2015.07.23 |
[어셈블리어] CMP,JMP 명령어 종류 (0) | 2015.07.23 |
[어셈블리어] 명령어.(Opcode) (0) | 2015.07.18 |
[어셈블리어] 명령어와 Operand (0) | 2015.07.15 |