This seems very useless. I'm not sure Jazelle was ever used for anything, and I'm not sure why anyone would want to either - least of all on the Wii's IO processor.
Still, this repo links to some other stuff I found interesting. The Starlet exploit which is linked is funny for how basic it is, and it also seems to be part of a much bigger and more ambitious (but mothballed?) project.
Jazelle was before my time but what I like is that maybe v7 maybe even v8 have enough Jazelle logic to say "we don't do that here" and that's it. It was in one of their docs that the only functionality is detection of them as illegal instructions. So all those little cost optimized chips had to spend some silicon because of that decision years ago, which feels very x86.
Is this any different from detecting illegal instructions in general?
I would have thought any encoding in the unused part of the instruction space would generate a SIGILL, needing the "we don't do that here" logic.
A bit fuzzy. I mostly work on M-class so idk what the sig would be, but a cursory glance says there's a dedicated "go to Jazelle" instruction that maybe it deals with differently? That way if any bytecodes overlap with arm/thumb it'll still know. Thinking about it, I'm more certain that's what it is. Maybe there's a bytecode that's a valid non-Java encoding that's a valid instruction, so they focus on the Jazelle mode entry
You're looking at it exactly the wrong way around: Jazelle support on the Wii's IO processor was useless – but thanks to this, it's not anymore :)
>least of all on the Wii's IO processor.
The Wii sold well, thus, if anything, it is a particularly good target for playing with Jazelle.
I was approaching it from the perspective of "What would be useful to do on a Wii?" When you approach it from the perspective of "I want to play with Jazelle - what can I use?" it makes much more sense. Thanks.
EDIT: Following one of the reference links, apparently you can enter Jazelle mode on the Nintendo 3DS's application cores. That's another suitable target. https://github.com/SonoSooS/libjz
Philosophical question: What does "useful" mean in the context of a game console?
In my view, it's people having fun with it and maybe learning a new thing or two, so I'd say this is as useful as it gets.