Code: Select all
segment .data
segment .bss
segment .text
global happy
happy:
push ebp
mov ebp, esp
mov eax, 5
pop ebp
ret
Code: Select all
#include <stdio.h>
extern long happy();
int main(){
printf("I got: %d\n", happy());
return 0;
}
Code: Select all
nasm test.asm -o test.o -f elf32
gcc -m32 main.c test.o -o experiment
However,
Code: Select all
segment .data
segment .bss
segment .text
extern global_var
global happy
happy:
push ebp
mov ebp, esp
mov eax, 5
add eax, [global_var]
pop ebp
ret
Code: Select all
#include <stdio.h>
extern long happy();
int global_var = 3;
int main(){
printf("I got: %d\n", happy());
return 0;
}
I think I'm missing something about C-assembly interoperability...