Compilar e ver o codigo gerado em assembly

É possível fazer isso com a IDE do Arduino?
Alguém tem idéia de como se faz isso?

Com o avr-gcc usando o comando -S chamando o compilador
por comandos de prompt no linux mostra o codigo traduzido
pro assembly. A IDE do arduino usa o avr-gcc mas não sei como
e se é possível ligar essa opção.

Acho que tens de encontrar a MakeFile para veres qual é o output do GCC. Assim de repente não faço ideia para onde vão esses ficheiros.

Será que não tem como descompilar o arquivo HEX gerado na hora de fazer upload do sketch para o Arduino? Porque, em algum momento, o avrdude tem que ter o HEX.

Dá uma vasculhada nas pastas onde está o seu sketch pra ver se o HEX não está lá junto também.

Já agora... conheces como "descompilar" de hex para assembly?

Pelo que sei, pelo AVR Studio há uma maneira de abrir o HEX e ver o equivalente em asm
Eu não tenho instalado.

é possivel fazer e não precisa ter nada instalado...
cada vez que você compila um sketch no arduino, ele cria uma pasta contendo todos os arquivos do sketch/bibliotecas inclusive o .hex (aqui no meu caso o caminho é esse). Esse é um diretório

C:\Documents and Settings\[USUARIO]\Configurações locais\Temp\build8751132421165911833.tmp\ [arquivos]

para não ter que ficar procurando, pesquise por arquivos *.elf // esse é o arquivo necessário e não o hex.
achado o elf do seu sketch, copie e cole ele dentro >> [pasta do arduino]\hardware\tools\avr\bin

lá dentro haverá um programa chamado avr-objdump.exe
com um terminal dentro desta pasta digite

[b]avr-objdump.exe -S [seu_sketch].cpp.elf > asm.txt
[/b]

e para aproveitar o terminal aberto já digite notepad asm.txt. Pronto!

aqui vai o blink em assembler// eu retirei muita coisa e só deixei aqui o setup e loop pra ter uma ideia...

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
 100:	8d e0       	ldi	r24, 0x0D	; 13
 102:	61 e0       	ldi	r22, 0x01	; 1
 104:	0e 94 9c 01 	call	0x338	; 0x338 <digitalWrite>
  delay(1000);              // wait for a second
 108:	68 ee       	ldi	r22, 0xE8	; 232
 10a:	73 e0       	ldi	r23, 0x03	; 3
 10c:	80 e0       	ldi	r24, 0x00	; 0
 10e:	90 e0       	ldi	r25, 0x00	; 0
 110:	0e 94 e2 00 	call	0x1c4	; 0x1c4 <delay>
  digitalWrite(13, LOW);    // set the LED off
 114:	8d e0       	ldi	r24, 0x0D	; 13
 116:	60 e0       	ldi	r22, 0x00	; 0
 118:	0e 94 9c 01 	call	0x338	; 0x338 <digitalWrite>
  delay(1000);              // wait for a second
 11c:	68 ee       	ldi	r22, 0xE8	; 232
 11e:	73 e0       	ldi	r23, 0x03	; 3
 120:	80 e0       	ldi	r24, 0x00	; 0
 122:	90 e0       	ldi	r25, 0x00	; 0
 124:	0e 94 e2 00 	call	0x1c4	; 0x1c4 <delay>
}
 128:	08 95       	ret

0000012a <setup>:
void setup();
void loop();
void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
 12a:	8d e0       	ldi	r24, 0x0D	; 13
 12c:	61 e0       	ldi	r22, 0x01	; 1
 12e:	0e 94 76 01 	call	0x2ec	; 0x2ec <pinMode>
}
 132:	08 95       	ret

O bom disso é que ele mostra o comando e o equivalente em asm.
Aqui há algumas referências: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240652220
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1207951658

Com o shift apertado, compile o programa. A saida do HEX estara por exemplo, em:

C:\Documents and Settings\NomeDoUsuario\Local Settings\Temp\build2084784412515958663.tmp\Blink_Sample.cpp.hex

Olá pessoal. ^^

Estou desenvolvendo uma interface visual para o avr-objdump.exe, bastando apenas indicar o tipo de parâmetros que você deseja e onde está o arquivo .elf .

Vejam o projeto: Blog Embarcado: Disassembler Arduino

Espero ter ajudado.

[]'s ^^

BlogEmbarcado:
Olá pessoal. ^^

Estou desenvolvendo uma interface visual para o avr-objdump.exe, bastando apenas indicar o tipo de parâmetros que você deseja e onde está o arquivo .elf .

Vejam o projeto: Blog Embarcado: Disassembler Arduino

Espero ter ajudado.

[]'s ^^

Acho que você deveria colocar um post novo no forum, é bem interessante isso.