1234567891011121314151617181920212223242526 |
- .set noreorder
- .weak _init
- .weak _fini
- .global __start
- .global _start
- __start:
- _start:
- subu $fp, $fp, $fp # Zero the frame pointer.
- lui $gp, %hi(_gp)
- addi $gp, %lo(_gp)
- #la $gp, _gp
- lw $4, %call16(main)($gp) # Get main() ...
- lw $5, ($sp) # Get argc...
- addu $6, $sp, 4 # and argv ...
- lw $7, %call16(_init)($gp) # and _init() ...
- and $sp, $sp, -8 # Align the stack pointer to 8 bytes
- addi $sp, $sp, -4*6 # Leave space for arguments 0..3, arg4, and arg5.
- lw $12, %call16(_fini)($gp) # and _fini() ...
- sw $12, 4*4($sp) # Save arg4.
- sw $0, 4*5($sp) # ldso_fini == NULL
- lw $25, %call16(__libc_start_main)($gp)
- jalr $25 # Let's go!
- nop
- b . # Never gets here.
- nop
|