Fecha: 11 Ene 2024 Mod: 11 Ene 2024
vim_launcher.asm
Introducción
Hoy quiero compartir una experiencia interesante: crear un programa en ensamblador para lanzar Vim usando FASM (Flat Assembler). Este proyecto, aunque simple, nos ayudará a entender mejor cómo funciona el ensamblador y cómo interactuar con el sistema operativo a bajo nivel.
¿Qué es FASM?
FASM (Flat Assembler) es un ensamblador rápido y eficiente para x86/x86-64. A diferencia de otros ensambladores.
vim_launcher code in asm:
format ELF64 executable
segment readable executable
entry start
start:
mov rax, 59 ; syscall number for execve
lea rdi, [vim_path] ; first argument - path to executable
lea rsi, [args] ; second argument - array of argument pointers
xor rdx, rdx ; third argument - null for no environment variables
syscall
mov rax, 60 ; syscall number for exit
mov rdi, 1 ; exit code 1
syscall
segment readable writeable
vim_path db '/usr/bin/vim',0 ; Path to vim executable
args:
dq vim_path ; argv[0] is the program name
dq 0 ; argv[1] is null (end of array)