Un petit test nasm + gcc
Greg | 09 Feb 2012
Ceci n'est pas vraiment un post, mais plus un exemple d'utilisation de nasm + gcc (sous MacOSX). Il s'agit ici d'un exemple pour l'architecture i386. Il a été testé sous Lion. Promis, je vais proposer une mise à jour, rapidement, pour montrer ce que cela donne en x86_64.
Attention, la version de NASM installée par Apple date un peu ;) Je vous conseille donc d'installer la vôtre.
add.asm
section .data
msg: db '%d',0xa, 0
addition_cumul: dd 0
section .text
global _add
extern _printf
_add:
push ebp
mov ebp, esp
mov eax, [addition_cumul]
add eax, [ebp + 8]
mov [addition_cumul], eax
push dword eax
push dword msg
call _printf
add esp, 4
pop eax
leave
ret
testadd.c
#include <stdio.h>
int add(int nb);
int main() {
int i;
int last = 0;
for(i=0; i<10; i++) {
printf( "%d + %d = ", last, i);
last = add (i);
}
return 0;
}
Makefile
all:
/usr/local/bin/nasm -f macho add.asm
/usr/bin/gcc-4.2 -Wl,-no_pie -m32 -c testadd.c
ld -arch i386 -macosx_version_min 10.6 -lc -o testadd add.o testadd.o /usr/lib/crt1.o
# -no_pie
clean:
rm -f *.o testadd