5 ms·
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
by textmode 8y ago
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 < 1.mri to script changes to lib1.a
(Did I forget about crt0.o?)
- saagarjha 8y agoWhy even have the overhead of a function call to main in that case?
- Vogtinator 8y agoBecause you need a syscall to exit the process.
- saagarjha 8y agoIs that not what this part of the code does? movl $1,%eax int $0x80
- textmode 8y agoBelow is a sample "1.asm" source file which in one expt yields a 2.2K static binary. "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
- textmode 8y ago(1.3K stripped)