Assembly x86-64Registradores
RFLAGS e saltos
Os bits de status e quais saltos os leem
RFLAGS e saltos condicionais
O RFLAGS é um registrador de bits de status atualizado por quase toda operação aritmética e lógica. Você raramente o lê direto: o padrão é uma instrução ajustar os flags (via cmp, test ou aritmética) e um salto condicional logo em seguida consultá-los.
| Flag | Nome | Significado |
|---|---|---|
| CF | Carry | Vai-um/empresta em aritmética sem sinal; estouro de deslocamento. |
| PF | Parity | 1 se o byte baixo do resultado tem número par de bits 1. |
| AF | Auxiliary | Vai-um do nibble baixo; usado por aritmética BCD. |
| ZF | Zero | 1 quando o resultado é zero — a base de je/jne. |
| SF | Sign | Copia o bit mais significativo do resultado (sinal). |
| DF | Direction | Direção das operações de string (0 = crescente). cld/std o controlam. |
| OF | Overflow | Estouro em aritmética COM sinal (complemento de dois). |
| IF | Interrupt | Habilita interrupções mascaráveis (cli/sti, privilegiado). |
Depois de um cmp a, b (que calcula a − b), estes são os saltos mais comuns e a condição que cada um testa:
| Salto | Condição | Flags |
|---|---|---|
| je / jz | a == b | ZF = 1 |
| jne / jnz | a != b | ZF = 0 |
| jg / jnle | a > b (com sinal) | ZF = 0 e SF = OF |
| jl / jnge | a < b (com sinal) | SF ≠ OF |
| ja / jnbe | a > b (sem sinal) | CF = 0 e ZF = 0 |
| jb / jc | a < b (sem sinal) | CF = 1 |
| js / jns | resultado negativo / não | SF = 1 / 0 |
| jo / jno | houve overflow / não | OF = 1 / 0 |