typestar

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

  1. La sección .data guarda los bytes del mensaje y un salto.
  2. equ $ - msg hace que el ensamblador calcule el largo.
  3. El syscall 1 escribe; los registros son el orden de argumentos.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Primeros programas; paso 2 de 31 en Fundamentos del lenguaje.

← Anterior Siguiente →