		.file	"startup.S"
	
		.section .rodata
		.data
argv0:		.asciz		"\"This-MIPS-program\""
argv:		.word		argv0	

		.text
		.section .start, "ax"
		.extern _init
		.align	2
		.globl _start
_start:
		.set	noreorder

		# Set stack pointer 
		la $sp, stack_ptr
		# Set global pointer 
		la $gp, _gp

		# zero bss
		la $8, __bss_start
		la $9, _end
$zeroise:		
		sw $0, 0($8)
		bne $8, $9, $zeroise
		addiu	$8, 4

		# Call _init
		la $k0, _init
		jalr $k0
		nop
		
		# Set environment
		li	$a0, 1
		la	$a1, argv

		# Call main
		la $k0, main
		jalr $k0
		nop

		# Terminate after main returns
_terminate:	
		nop
		la $t0, exit
		jalr $t0
		move $a0, $v0
		
		.set	reorder
