Subversion Repositories tendra.SVN

Rev

Blame | Last modification | View Log | RSS feed

/ crt1.s version 1.0 for tcc/trans386_Solaris

.file "crt1.s"
.text

.type _start,@function
.globl _start
_start:
 pushl $0               / null return address
 pushl $0               / null return frame pointer
 movl %esp,%ebp         / initial frame pointer

 pushl %edx
 call atexit            / see System V ABI, p3-32
 popl %eax

 pushl $_fini
 call atexit            / to call _fini at any sort of exit
 popl %eax

 call __fpstart         / initialise FPU

 movl 8(%ebp),%eax      / argc
 leal 16(%ebp,%eax,4),%edx      / Environment pointers
 movl %edx,_environ     / preserve for getenv etc
 pushl %edx             / and 3rd main argument
 leal 12(%ebp),%edx
 pushl %edx             / argv
 pushl %eax             / argc
 call _init             / preserve 3 arguments through _init
 call main
 addl $12,%esp

 pushl %eax
 call exit              / program exit

 movl $1,%eax
 lcall $7,$0            / catch-all, see System V ABI, p3-25

.size _start, .-_start