I am trying to figure out the encoding for unconditional JMPs on SPARC, i.e the JMP. After disassembling a few binaries.
In my IDA disassembly the encoding for JMP %g1 is:
81 c0 40 00
Digging through the spark manuals, I can't seem to find a record of how this is encoded. I am also confused as to why IDA refers to a "JMP" as opposed to the "JMPL" in the docs.
The JMPL encoding recommendations given in the SPARC9 manual are a little arcane to me and I struggle with what they are getting at:
10-RD-OP3-RS1-i-[-]-rs2
or
10-RD-OP3-RS1-i-siMM3
"If either of the low-order two bits of the jump address is nonzero, a mem_address_not_aligned exception occurs"
Well, I'm not sure how that squares with the instruction that IDA found. Can someone break down how this maps to JMP %g1? How would this change for JMP %g2?