Follow me
RSS feed
My sources
My Viadeo

Un petit test nasm + gcc

By Greg | 09 Feb 2012

Projets 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

 

Copyright © 2009 - 2011 Grégoire Lejeune.
All documents licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License, except ones with specified licence.
Powered by Jekyll.