'Reverse engineering'에 해당하는 글 1건

1) Flag register

 Flag register는 CPU 내부 기구중 하나로 산술 연산 결과의 상태를 보여주는 flag bit들이 모인 레지스터이다.
산술 연산시 CPU에 의해 자동적으로 세팅되며 , 프로세서의 현재 상태를 결정한다.
상태레지스터라고 불리고 기종에 따라 condition register라고 불리기도한다.


상태 플래그 (Status flag)

Carry Flag (CF)
Unsigned overflow가 발생할 때 1로 세팅된다.
Parity Flag (PF)
연산결과에 1인 bit의 개수가 짝수개이면 1 , 홀수개이면 0으로 세팅된다.
Auxiliary Flag (AF)
연산결과 하위 4bit에 Unsigned overflow가 발생했을때 1로 세팅된다.
Zero Flag (ZF)
연산결과가 0일 때 1로 세팅된다.
Sign Flag (SF)
부호를 나타내는 flag로 연산결과의 MSB(Most Significant Bit)와 같다.
연산결과가 양수이면 0 , 음수이면 1로 세팅된다.
Overflow Flag (OF)
Signed overflow가 발생할 때 1로 세팅된다.


컨트롤 플래그 (Control flag) : CPU의 동작상태를 제어하는 flag

Trap Flag (TF)
Trap flag가 1로 세팅되면 명령어를 한개 수행하고 , 0x01 inturrupt (the debug interrupt)를 발생시키게 되는데 0x01 inturrupt가 발생하면 디버거가 해당 프로세스를 attach 할 수 있는 상태가 된다.
Interrupt enable Flag (IF)
Interrupt enable Flag가 1로 세팅되면 외부 인터럽트 요구는 무시되고 , 0으로 세팅되면 외부 인터럽트요구를 받아들인다.
Direction Flag (DF)
데이터를 다른 메모리에 복사할때 방향을 결정하는 flag이다.
Direction flag가 0으로 세팅되있을동안 데이터 주소를 가르키는 레지스터가 증가하고 , 1로 세팅되있을동안 데이터 주소를 가르키는 레지스터가 감소한다.




2) 연산에 따른 flag bit

Signed
CF ZF SF OF
ADD X>0 , Y>0 , X+Y<RANGE 0 0 0 0
ADD X>0 , Y>0 , X+Y>RANGE 0 0 1 1
SUB X>0 , Y>0 , X>Y 0 0 0 0
SUB X>0 , Y>0 , X<Y 1 0 1 0
SUB X>0 , Y>0 , X=Y 0 1 0 0


Unsigned
CF ZF SF OF
ADD X>0 , Y>0 , X+Y<RANGE 0 0 0 0
ADD X>0 , Y>0 , X+Y>RANGE 1 0 1 0
SUB X>0 , Y>0 , X>Y 0 0 0 0
SUB X>0 , Y>0 , X<Y 1 0 1 0
SUB X>0 , Y>0 , X=Y 0 1 0 0

'Reverse engineering' 카테고리의 다른 글

Flag Register  (3) 2011.07.28

WRITTEN BY
pwn3r
45

트랙백  0 , 댓글  3개가 달렸습니다.
  1. 지나가다 봅니다. 2012.01.08 00:51 신고
    3.4.3.2 DF Flag
    The direction flag (DF, located in bit 10 of the EFLAGS register) controls string instructions (MOVS, CMPS, SCAS, LODS, and STOS). Setting the DF flag causes the string instructions to auto-decrement (to process strings from high addresses to low addresses). Clearing the DF flag causes the string instructions to auto-increment (process strings from low addresses to high addresses).
    The STD and CLD instructions set and clear the DF flag, respectively.

    DF 설명이 잘못되있는 듯 하네요~~~ 여기서 clear는 DF->0
  2. 비밀댓글입니다
secret