IA-32 Processor State
32bit compiler | |||
general purpose 6개는 범용으로 용도가 정해져 있지 않음. 컴파일러가 그때그때 결정 저장공간 6개를 (레)로 쓸 수 있다 |
%eax | accumulate | temporary data |
%ecx | counter | ||
%edx | data | ||
%ebx | base | ||
%esi | source index (배열 idx 관련) |
||
%edi | destination index (배열 idx 관련) |
||
특별한 목적의 (레) 범용 안 됨 |
%esp | Current stack top stack pointer (스택이 어디까지 사용됐는지) |
Location of runtime stack |
%ebp | Current stack frame 의 첫번째 위치(base address) base pointer (스택의 처음 위치) |
%eip | Location of current code control unit | Instruction pointer |
CF ZF SF OF | Status of recent tests | Condition codes (EFLAGS) |
Setting Condition Codes
EFlag register 중 Single bit registers
- CF (Carry), SF (Sign), ZF (Zero), OF (Overflow)
addl src, des
- Implicitly set by arithmetic operations 연산 뒤 자동으로 세팅됨
cmpl b, a // 비교를 하기 위한 것, Eflags를 setting하기 위한
- Explicitly setting by compare instruction
- (a - b) without saving the result (arithmetic)
- CF
- ZF : set if (a - b) = 0
- SF : set if (a - b) < 0 // b가 더 크면
- OF : (a>0 && b<0 && (a-b)<0) || (a<0 && b>0 && (a-b)>0)
testl b, a
Explicitly setting by test instruction
• Sets condition codes based on value of a and b
- Useful to have one of the operands be a mask
• Computes a & b without setting destination (logical) • ZF set when a & b == 0
• SF set when a & b < 0
• CF and OF are cleared to 0
'전공 > 시스템프로그래밍' 카테고리의 다른 글
[13] Linking (0) | 2022.12.04 |
---|---|
두번째 과제 (0) | 2022.11.05 |
[04] Floating Point (0) | 2022.10.28 |
[03-3] Integer(정수) / Representing and Manipulating Integers (0) | 2022.10.28 |
[05] BYTE ORDERING (0) | 2022.10.27 |