Los 2 cumplen el mismo objetivo, solo que uno es escrito en el lenguaje de programación C y es compilado con GCC, y el otro está escrito en el lenguaje de programación ASM y está compilado con Nasm.
En caso de no tener instalado nasm, puedes instalar con:
apt-get install nasm
C
#include <unistd.h> // Para Write
#include <string.h> // Para strncpy
#define ARG 3
int main(void)
{
char msg[ARG];
strncpy (msg, "Hi", ARG);
write (1, msg, ARG);
return 0;
}
#include <string.h> // Para strncpy
#define ARG 3
int main(void)
{
char msg[ARG];
strncpy (msg, "Hi", ARG);
write (1, msg, ARG);
return 0;
}
ASM
section .data
msg db "Hi"
section .text
global _start
_start:
;SYSCALL write(1, msg, 2)
mov eax, 4 ;Función
mov ebx, 1 ;Param1
mov ecx, msg ;Param2
mov edx, 3 ;Param3
int 0x80 ;Interrupción
;SYSCALL exit(0)
mov eax, 1 ;Función
mov ebx, 0 ;Param1
int 0x80 ;Interrupción
msg db "Hi"
section .text
global _start
_start:
;SYSCALL write(1, msg, 2)
mov eax, 4 ;Función
mov ebx, 1 ;Param1
mov ecx, msg ;Param2
mov edx, 3 ;Param3
int 0x80 ;Interrupción
;SYSCALL exit(0)
mov eax, 1 ;Función
mov ebx, 0 ;Param1
int 0x80 ;Interrupción
Para compilar el archivo en C usamos gcc archivo.c -Wall
Para compilar el archivo en ASM usamos nasm -f elf archivo.asm y ld archivo.o
En los 2 casos creamos un binario llamado a.out, el cual podemos ejecutar escribiendo ./a.out
No hay comentarios:
Publicar un comentario