Why is 0x08804000 gripshift's text address ?
Thats where apps are loaded.
Could someone explain to me what this code does?
well its pretty much spelled out for you.
store the address of the file name in $a0(0xC0 offset from $ra)
store the value of the flags in $a1(O_RDONLY)
store the value of the file mode in $a2(0037, i wonder if this matters since they didn't use 0777)
then call sceIoOpen($a0, $a1, $a2)
store the return of sceIoOpen in $a0
store 0x08810000 in $a1
store 0x10000 in $a2
call sceIoRead($a0, $a1, $a2); so your reading $a2 bytes into buffer located at$a1 from the file specified by $a0store the return of sceIoOpen in $a0
store 0x08810000 in $a0
store 0x10000 in $a1
call sceKernelDcacheInvalidateRange($a0, $a1); so your clearing the cache for address $a0 for $a1 bytes
wait for 2 instuctions
store 0x088100000 in $a0
goto $a0
all thats going on here is that you're loading 0x100000 bytes of data from a file into memory at address 0x088100000, invalidaing the data cache so that none of it is overwritten then executing it.