typestar

stdout y stderr en Assembly

Los descriptores son números: 1 y 2 son dos corrientes.

; File descriptors are just numbers: 1 is stdout, 2 is stderr.
        global _start

        section .data
good:   db "measurement ok", 10
GLEN:   equ $ - good
warn:   db "sensor drift!", 10
WLEN:   equ $ - warn

        section .text
_start:
        mov rax, 1
        mov rdi, 1              ; stdout
        mov rsi, good
        mov rdx, GLEN
        syscall

        mov rax, 1
        mov rdi, 2              ; stderr: same call, other stream
        mov rsi, warn
        mov rdx, WLEN
        syscall

        mov rax, 60
        xor rdi, rdi
        syscall

Cómo funciona

  1. El mismo sys_write sirve a ambos, el fd en rdi.
  2. Redirige uno y el otro sigue llegando.
  3. Las advertencias van a stderr; los resultados a stdout.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
26
Caracteres a escribir
439
Tokens
73
Ritmo de tres estrellas
55 tpm

Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 80 segundos.

Escribe este fragmento

Paso 2 de 3 en Hablando con Linux; paso 27 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →