티스토리 뷰

보안

PUSHFD & POPFD

NineKY 2008. 1. 25. 17:00
PUSHFD 명령은 32비트 EFLAGS 레지스터 값을 스택에 푸시하고 POPFD는 스택에서 EFLAGS로 팝한다.

PUSHFD
POPFD

실제 주소 모드 프로그램은 16비트 FLAGS 레지스터를 스택에 푸시하기 위해 PUSHF 명령을 사용하고 POPF는 스택에서 FLAGS로 팝한다.

플래그 값의 백업을 만들고 후에 다시 복구하는 것이 유용할 때가 많다. 이렇게 하는 한 가지 방법은 PUSHFD와 POPFD로 코드의 어떤 블록을 감싸는 것이다.
pushfd
;
; code
;
popfd

이 러한 푸시와 팝을 사용할 때 프로그램의 실행 경로가 POPFD를 지나치지 않게 매우 조심해야만 한다. 프로그램 내의 모든 푸시와 팝이 있는 곳을 기억하기 까다로울 수 있다. 보다 오류가 적은 방법은 플래그를 변수에 저장하는 것이다.
.data
saveFlags DWORD ?
.code
pushfd
pop saveFlags

다음 문은 그 변수로부터 플래그를 복원한다.
push saveFlags
popfd
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함