티스토리 뷰
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
[ 명령어에 따른 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 : 조건에 따라 데이터를 이동시키는 명령어.
'컴퓨터 공학 이론 > 시스템 프로그래밍' 카테고리의 다른 글
[시스템 프로그래밍] Calling Convention과 Stack (0) | 2022.12.04 |
---|---|
[시스템 프로그래밍] File Structure & I/O (0) | 2022.12.03 |
[시스템 프로그래밍] Signal (0) | 2022.12.03 |
[시스템 프로그래밍] Process의 생성과 종료 (0) | 2022.12.02 |
[시스템 프로그래밍] Process와 Context Switching (0) | 2022.11.30 |