Awww, come on... be a bit serious. You guys have no idea about what you're doing, are you ?
We assembled this file with as and[...]What's interesting is that when we run the output from as through ld then[...]
First of all, get some lectures about ELF files goddammit! What's a relocatable ELF, what's a executable ELF, and most of all, what in the hell does as and ld do!
What you're doing is just throwing random bytes into the file, nothing more. Period. So you can't assume that the PSP ran the "j main" in any way! You can just assume that you got a specific file which specifically was decrypted in a certain way leading to a very random combination of bytes which incidentally shut off the PSP. This is indeed interesting. NOT because you managed to send specific instructions to the PSP, but because the FILE you created got some quirks into the PSP system. This is not due to the code dudes. This is just randomness.
My, my, my......
Ah, and, ChaosKnight, FYI, the "j" can't get right if going thru AS only. "jump" is absolute, and a .o is relative. So, the address is relocated when linking (thru LD that is), and meanwhile, the address is 0 inside the .o file produced by as.
Oookay, this MAY be a goddammit of a coincidence that "j 0" got the PSP to shut off. But I still say that this was pure random. Just try other tests:
nop
nop
nop
nop
j 0
move $a0, $a0
move $a0, $a0
move $a0, $a0
move $a0, $a0
j 0
If ALL of them lead to PSP to shut down, okay, then, try:
j 0x8000
If this ALSO lead to PSP to shut down, this then is pure random due to the ELF headers structure.
pixel: A mischievous magical spirit associated with screen displays. The computer industry has frequently borrowed from mythology. Witness the sprites in computer graphics, the demons in artificial intelligence and the trolls in the marketing department.