Emanuel_Avilés_Archivado


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)