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
- El mismo sys_write sirve a ambos, el fd en rdi.
- Redirige uno y el otro sigue llegando.
- Las advertencias van a stderr; los resultados a stdout.
Palabras clave y builtins usados aquí
dbglobalraxrdirdxrsisection
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.
Paso 2 de 3 en Hablando con Linux; paso 27 de 31 en Fundamentos del lenguaje.