typestar

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

  1. test rax, 1 pregunta por el bit bajo sin guardar.
  2. setz y setnz escriben 0 o 1 en un registro de byte.
  3. test rax, rax es el chequeo de cero idiomático.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Bits y banderas; paso 17 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →