I am a neophyte x86 asm user. I link using gcc and -nostdlib plus a very simple start.S: .globl _start _start: call main movl $1,%eax xorl %ebx,%ebx int $0x80 fasm 1.asm;gcc -nostdlib start.S 1.o lib1.a;a.out "lib1.a" contains only the functions needed by a.out instead of, e.g., every function in libc.a I use ar -M (Did I forget about crt0.o?)
"main" has been renamed to "xyz".
format ELF
section '.text' executable
public xyz
extrn _exit
extrn write
xyz:
mov eax,len00
push eax
push char00
mov eax,1
push eax
call write
call _exit
section '.data' writeable
char00 db "21 symbols", 0xA
len00 = $ - char00