티스토리 뷰

Status Register

상태 레지스터

 

[ Status Register ]

  Status Register

    : Flag Register 또는 PSW(Program Status Word)라고도 부른다.

    : CPU의 현재 상태 정보를 저장

    : 컨디션 코드(Condition Code), 인터럽트 마스크(Interrupt Mask), 특권 레벨(Privilege Level) 등

 

  Condition Code

    : 가장 최근에 실행한 산수연산에 대한 정보를 저장하는 Flag의 집합.

    : 연산 이후 자동적으로 저장됨.

    : Single Bit로 구성되어있다.

    : %eflags 레지스터에 존재.

    · CF : Carry Flag

    · ZF : Zero Flag

    · SF : Sign Flag

    · OF : Overflow Flag

Location of Condition Codes

 

[ 명령어에 따른 Condition Code ]

  · add Instruction

    - Carry 발생 시 CF.

       ( Unsigned의 경우 Carry로 Overflow 확인 가능 )

    - 값이 0일 때 ZF.

    - 값이 0보다 작을 때 SF.

    - 두 합의 부호가 달라질 시 OF.

 

  · cmp Instruction ( a - b : cmp b, a )

    - Carry 발생 시 CF.

    - a == b 이면 ZF.

    - a - b < 0 이면 SF.

    - a > 0 && b < 0 일 때 (a - b) < 0이면 OF, a < 0 && b > 0 일 때 (a - b) > 0이면 OF.

       ( 같은 부호로 합했는데 부호가 바뀌면 Overflow )

 

    cmp 역추적; 

      - Equal : ZF

      - Less(a<b) : SF^OF

      - Less Equal(a≤b) : SF^OF | ZF

      - Greater(a>b) : ~((SF^OF) | ZF)

 

  · test Instruction ( a & b : test b & a )

    - a & b == 0 이면 ZF.

    - a & b < 0 이면 SF.

 

[ Condition 코드에 의존적인 명령어 ]

  · jmp instruction : 조건에 따라 다음 명령으로 이동하는 명령어.

  · set instruction : 조건에 따라 바이트를 0 또는 1로 세팅하는 명령어.

  · comv instruction : 조건에 따라 데이터를 이동시키는 명령어.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함