Without picking apart a bootloader, can anyone tell me if what gets loaded by the bootloader is native AVR assembly language or some set of bytecodes along with an interpreter?
Next question – is there any way to disassemble or deinterpret the stuff that is output?
The bootloader uploads a hex file containing avr machine code.
This page provides an overview of the build process: http://www.arduino.cc/en/Hacking/BuildProcess
There is a tool in the arduino tools directory named obj-dump.exe that creates an assembly listing from an .elf file (an intermediate file produced by the build process, see link above).
Running something like the following command in the applet subdirectory for the sketch you want to view will dump mixed source and machine code into a file called Disassemmbly.txt. Change the path to the location of your arduino distribution
arduino-0017\hardware\tools\avr\bin\avr-objdump.exe -S *.elf > Disassembly.txt
That’s exactly what I was looking for.