[Computer Arch.] x86 Flags (Condition Code) & Registers
1. Flags
x86 machine에서 사용되는 condition code flags들에 대한 정보는 내부 architecture를 분석하는데 매우 중요하다. 내부 register name은 eflags
라는 이름으로 가져간다.
비트 | 약어 | 이름 | 설명 |
---|---|---|---|
0 | CF | Carry Flag | 연산시 최상위 비트 (MSB)에서 올림이 발생할 경우 set 된다. |
1 | 1 | ||
2 | PF | Parity Flag | 연산결과 1인 비트수가 짝수라면 set 된다 |
2 | 0 | ||
4 | AF | Auxiliary Flag | CF 가 Nibble 에 대하여 적용된다 |
5 | 0 | ||
6 | ZF | Zero Flag | 연산결과가 0 이 되었을때 set 된다 |
7 | SF | Sign Flag | 연산결과 MSB 가 1일때 set 된다 |
8 | TF | Trap Flag | 하나의 명령어 처리후에 single-step interrupt 를 발생시킨다 |
9 | IF | Interrupt Flag | Enables the external interrupt |
10 | DF | Direction Flag | Increment or decrement mode for |
11 | OF | Overflow Flag | 연산결과가 현재 나타낼 수 있는 범위를 초과했을 때 set 된다. 참고 |
12-13 | IO-PL | I/O Privilege Level | Used in protected mode operation to select the privilege level for I/O device(00~11). If current privilege level > IOPL, I/O (IN, INS, OUT, OUTS, CLI, STI) can be executed. Otherwise, an exception occurs (286+ only) |
14 | NF | Nested Task | Instruction caused nested task switch (286+) |
15 | 0 | ||
16 | RF | Resume Flag | Debug faults disabled during instruction execution (386+) |
17 | VM | Virtual 8086 | Currently executing 8086 code on virtual processor (386+) |
18 | AC | Alignment Check | Data aligned to four-byte boundary (486+) |
19 | VIF | Virutal interrupt flag | A copy of the interrupt flag bit available to the Pentium II processors |
20 | VIP | Virtual interrupt pending flag | Provides information about a virtual mode interrupt for the Pentium-Pentium II processors. Used in multitasking environment |
21 | ID | ID Flag | CPUID 명령이 지원되는지 나타내는 플래그 |
2. Registers
64bit | 32bit | 16bit | 8bit | Description |
---|---|---|---|---|
%rax | %eax | %ax | %al | Return value |
%rbx | %ebx | %bx | %bl | Callee saved |
%rcx | %ecx | %cx | %cl | 4th argument |
%rdx | %edx | %dx | %dl | 3th argument |
%rsi | %esi | %si | %sil | 2nd argument |
%rdi | %edi | %di | %dil | 1st argument |
%rbp | %ebp | %bp | %bpl | Callee saved |
%rsp | %esp | %sp | %spl | Stack pointer |
%r8 | %r8d | %r8w | %r8b | 5th argument |
%r9 | %r9d | %r9w | %r9b | 6th argument |
%r10 | %r10d | %r10w | %r10b | Caller saved |
%r11 | %r11d | %r11w | %r11b | Caller saved |
%r12 | %r12d | %r12w | %r12b | Callee saved |
%r13 | %r13d | %r13w | %r13b | Callee saved |
%r14 | %r14d | %r14w | %r14b | Callee saved |
%r15 | %r15d | %r15w | %r15b | Callee saved |