.global _start _start: # copy reent to this page push %ebx push %ecx mov _impure_ptr,%eax mov $0xf5000000,%ebx copy: mov (%eax),%ecx mov %ecx,(%ebx) add $4, %ebx add $4, %eax cmp $0xf5001000,%ebx jne copy pop %ecx pop %ebx movl $0xf5000000, _impure_ptr # environment adress was passed on stack pop %eax mov %eax, environ # call main (argc and argv are on the stack) call main # push exit code and pass to _exit syscall push %eax call exit # this should never be reached! .wait: hlt jmp .wait