플레그 레지스터(EFLAGS)
• CF(Carry Flag) - 산술 연산을 할 때, 자리올림이나
자리 내림할때 set(1) 된다.
• PF (Parity Flag) - 산술 연산을 할 때, 하위 1byte중
1bit가 짝수개면 set(1) 그렇지않으면 clear(0) 된다
• ZF (Zero Flag) - 산술 연산결과가 0이면 set(1) 된다.
제어문에서 많이 사용한다.
• SF (Sign Flag) - 최상위 bit(MSB)의 결과와 같은 결
과로 set(1) 또는 clear(0) 된다
• OF (Overflow Flag) - 연산결과가 Overflow가 될때
set(1)된다.
예제(인자없는,리턴값 없는 함수)
스택
main함수를호출한
함수의 EBP값
main함수를 호출한
함수로 복귀할 주소값
0x0018ff44 ESP
MOV EBP,ESP 실행
//main함수의 스택프레임 생성
EBP
55.
예제(인자없는,리턴값 없는 함수)
스택
fucntion함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함
수의 EBP값
main함수를 호출한 함
수로 복귀할 주소값
0x0018ff40 ESP
CALL function 실행
EBP
56.
예제(인자없는,리턴값 없는 함수)
스택
function함수를 호출한
함수의 EBP 값
fucntion 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함
수의 EBP값
main함수를 호출한 함
수로 복귀할 주소값
0x0018ff3C ESP
PUSH EBP 실행
EBP
57.
예제(인자없는,리턴값 없는 함수)
스택
function함수를 호출한
함수의 EBP 값
fucntion 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함
수의 EBP값
main함수를 호출한 함
수로 복귀할 주소값
0x0018ff3C ESP
MOV EBP,ESP 실행
//funtion 함수의 스택프레임 생성
EBP
58.
예제(인자없는,리턴값 없는 함수)
스택
function함수를 호출한 함수의 EBP
값
fucntion 함수를 호출한 함수로 복귀
할 주소값
main함수를 호출한 함수의 EBP값
main함수를 호출한 함수로 복귀할
주소값
0x0018ff34 ESP
SUB ESP,8 실행
//function 함수의 지역변수 공간 마련
EBP
59.
예제(인자없는,리턴값 없는 함수)
스택
1
function함수를 호출한 함수의 EBP
값
fucntion 함수를 호출한 함수로 복귀
할 주소값
main함수를 호출한 함수의 EBP값
main함수를 호출한 함수로 복귀할
주소값
0x0018ff34 ESP
MOV DWORD PTR SS:[EBP-4],1 실행
EBP
60.
예제(인자없는,리턴값 없는 함수)
스택
2
1
function함수를 호출한 함수의 EBP
값
fucntion 함수를 호출한 함수로 복귀
할 주소값
main함수를 호출한 함수의 EBP값
main함수를 호출한 함수로 복귀할
주소값
0x0018ff34 ESP
MOV DWORD PTR SS:[EBP-8],2 실행
EBP
61.
예제(인자없는,리턴값 없는 함수)
스택
2
1
function함수를 호출한 함수의 EBP
값
fucntion 함수를 호출한 함수로 복귀
할 주소값
main함수를 호출한 함수의 EBP값
main함수를 호출한 함수로 복귀할
주소값
0x0018ff3C ESP
MOV ESP,EBP 실행
//function 함수 스택프레임 해제 과정
EBP
62.
예제(인자없는,리턴값 없는 함수)
스택
2
1
function함수를 호출한 함수의 EBP
값
fucntion 함수를 호출한 함수로 복귀
할 주소값
main함수를 호출한 함수의 EBP값
main함수를 호출한 함수로 복귀할
주소값
0x0018ff40 ESP
POP ESP 실행
//function 함수 스택프레임 해제 과정2
EBP
63.
예제(인자없는,리턴값 없는 함수)
스택
2
1
function함수를 호출한 함수의 EBP
값
fucntion 함수를 호출한 함수로 복귀
할 주소값
main함수를 호출한 함수의 EBP값
main함수를 호출한 함수로 복귀할
주소값
0x0018ff40 ESP
RET(RETN) 실행
//function 함수 종료
EBP
64.
인자값을 넘겨 함수를호출 할 때
• 어셈블리어에선 인자값을 PUSH로 넘겨준
다.
• PUSH를 넘겨줄 때 C언어의 순서와 반대로
넘겨준다
• EBP를 기준으로해서 인자값을 사용 할 수
있다.
예제(Return 값이 있는함수)
스택
main함수를 호출한 함
수로 복귀할 주소값
0x0018ff48 ESP
84.
예제(Return 값이 있는함수)
스택
main함수를 호출한 함
수의 EBP 값
main함수를 호출한 함
수로 복귀할 주소값
0x0018ff44 ESP
PUSH EBP 실행
85.
예제(Return 값이 있는함수)
스택
main함수를 호출한 함
수의 EBP 값
main함수를 호출한 함
수로 복귀할 주소값
0x0018ff44 ESP
MOV EBP,ESP 실행
//main 함수의 스택프레임 생성
EBP
86.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff40 ESP
CALL function 실행
EBP
87.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff3C ESP
PUSH EBP 실행
EBP
88.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff3C ESP
MOV EBP,ESP 실행
//function 함수의 스택프레임 생성
EBP
89.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff3C ESP
MOV EAX,5 실행
//리턴값 저장 --> C에서 return 5; 부분
EBP
90.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff40 ESP
POP EBP
//function 함수 스택프레임 해제 과정1
EBP
91.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff44 ESP
RET(RETN) 실행
EBP
92.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff44 ESP
XOR EAX,EAX 실행
//main 함수의 리턴값 저장 --> C에서 return 0; 부분
EBP
93.
예제(Return 값이 있는함수)
스택
function 함수를 호출한
함수의 EBP값
function 함수를 호출한
함수로 복귀할 주소값
main함수를 호출한 함수
의 EBP 값
main함수를 호출한 함수
로 복귀할 주소값
0x0018ff48 ESP
POP EBP실행
//main 함수의 스택프레임 해제 과정