extern add     ;em um arquivo add.c com a funcao add(int, int)
extern printf
extern exit

section .data
  format db "%d", 10, 0
section .text
    global main
main:
    push rbp
    mov rdi,6
    mov rsi,2  
    call  add     ; add(2, 6)
    
    mov rdi,format
    mov rsi, rax
    call  printf  ; printf(format, eax)
    pop rbp
   
    xor rdi, rdi 
    call exit     ; exit(0)
    

;função e parâmetros para 64 bits
;foo(rdi,rsi,rdx,rcx,r8,r9), os demais na stack

;compilar e linkar:
;nasm -f elf64 mainAsm.asm, gera mainAsm.o
;gcc -Wall -c addC.c. atenção ao -c, que apenas compila, gerando addC.o
;gcc mainAsm.o addC.o -o nasmMainC, gera o executável nasmMainC




;se fosse em 32 bits
;gcc -Wall -c addC.c, 
;nasm -f elf mainAsm.asm 
;ld mainAsm.o addC.o -lc -I /lib/ld-linux.so.2
;./a.out 
;8
