sys_write en Assembly
fd, buffer, largo en rdi, rsi, rdx — y luego syscall.
; sys_write wants fd, buffer, length -- in rdi, rsi, rdx.
global _start
section .data
msg: db "hello, machine", 10
len: equ $ - msg ; the assembler counts for us
section .text
_start:
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, msg
mov rdx, len
syscall
mov rax, 60
xor rdi, rdi
syscall
Cómo funciona
- La sección
.dataguarda los bytes del mensaje y un salto. equ $ - msghace que el ensamblador calcule el largo.- El syscall 1 escribe; los registros son el orden de argumentos.
Palabras clave y builtins usados aquí
dbglobalraxrdirdxrsisection
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 340
- Tokens
- 47
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 47 segundos.
Paso 2 de 3 en Primeros programas; paso 2 de 31 en Fundamentos del lenguaje.