test y setcc en Assembly
Las preguntas de banderas se vuelven respuestas de byte.
; test ands without storing; setcc turns a flag into a byte.
global _start
section .text
_start:
mov rax, 0b10100 ; 20
test rax, 1 ; lowest bit set?
setz bl ; bl = 1 if even
movzx rbx, bl
test rax, rax ; the idiomatic "is it zero?"
setnz cl ; cl = 1 if nonzero
movzx rcx, cl
lea rdi, [rbx + rcx + 40] ; 1 + 1 + 40
mov rax, 60 ; exit code 42
syscall
Cómo funciona
test rax, 1pregunta por el bit bajo sin guardar.setzysetnzescriben 0 o 1 en un registro de byte.test rax, raxes el chequeo de cero idiomático.
Palabras clave y builtins usados aquí
blclglobalraxrbxrcxrdisection
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 425
- Tokens
- 53
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 58 segundos.
Paso 3 de 4 en Bits y banderas; paso 17 de 31 en Fundamentos del lenguaje.