Understanding the .hex file

I posted this question over on AVRFreaks.net and found the answer I was looking for, so I thought it would be prudent to post the answer here as well for people who are seeing the same issue:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=821010#821010

Turns out the bytes of the instruction are being reversed.

0x0C94  -->  0x940C

It appears that the second word for the double-word instruction is also reversed.

0x3400  -->  0x0034

Then 0x0034 is being shifted to the left one bit which results in 0x68. This is done because the JMP address needs to end up on an even byte boundry, so the last binary digit in the jump address will always be zero. They can save a bit (and thus address a space one power of two larger) if they store the bit-shifted number instead.

That's how the compiler is generating the JMP 0x68 assembler instruction.

I'm still not quite sure how to tell if the bytes have been reversed or not. Is that just for double-word instructions? Is there some documentation I missed that indicates this is how it works?