Voltar à lista
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.

FlagNomeSignificado
CFCarryVai-um/empresta em aritmética sem sinal; estouro de deslocamento.
PFParity1 se o byte baixo do resultado tem número par de bits 1.
AFAuxiliaryVai-um do nibble baixo; usado por aritmética BCD.
ZFZero1 quando o resultado é zero — a base de je/jne.
SFSignCopia o bit mais significativo do resultado (sinal).
DFDirectionDireção das operações de string (0 = crescente). cld/std o controlam.
OFOverflowEstouro em aritmética COM sinal (complemento de dois).
IFInterruptHabilita 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:

SaltoCondiçãoFlags
je / jza == bZF = 1
jne / jnza != bZF = 0
jg / jnlea > b (com sinal)ZF = 0 e SF = OF
jl / jngea < b (com sinal)SF ≠ OF
ja / jnbea > b (sem sinal)CF = 0 e ZF = 0
jb / jca < b (sem sinal)CF = 1
js / jnsresultado negativo / nãoSF = 1 / 0
jo / jnohouve overflow / nãoOF = 1 / 0