O zeurt encontrou o Simple ARM Assembler (aasm), um Assembler gratuito para instruções ARM, mas não havia o binário para Windows. Então usei o Cygwin (
http://www.cygwin.com/) e o compilei para Windows x86. Estou enviando o arquivo zipado com o aasm.exe e também com a documentação no formato texto Windows. O site de distribuição,
http://intranet.cs.man.ac.uk/Study_subweb/Ugrad/coursenotes/komodo/assembler/ nos dá essa liberdade.
Ele deve ser executado pelo Prompt de Comando do Windows. É bem simples de utilizar e suporta o modo Thumb. Você pode usar o Bloco de Notas e escrever, por exemplo:
THUMB
INICIO ADD R0, R1, R1
ADD R2, R1, R1
LSL R1, R2, #3
BNE INICIO
A primeira linha diz que será usado o modo Thumb (16 bits). A segunda possui um
label. Já vi que no modo Thumb, os mnemônicos que o IDA chama de ADDS, LSLS e LSRS devem ser escritos como ADD, LSL e LSR, respectivamente. Deve haver mais algumas diferenças em outros mnemônicos, consultem a documentação. Se você não sabe o que é modo Thumb ou como são as instruções do ARM, veja um pouco do assunto a partir deste post:
http://ryan.com.br/smf/index.php?topic=392.msg9177215#msg9177215.
Após salvar o arquivo, você pode usar o comando
aasm.exe -h - (caminho_do_arquivo\nome_do_arquivo) para ver o hexadecimal gerado na tela ou
aasm.exe -h (nome_do_arquivo_de_saida) (caminho do arquivo\nome do arquivo) para gerar um arquivo
texto com o hexadecimal. Veja que no primeiro caso, em vez do nome do arquivo de saída, foi usado apenas o símbolo "-". O arquivo de saída não pode ser visualizado corretamente no Bloco de Notas pois ele não está no formato texto Windows. Use outro visualizador. Sugiro o Programmer’s Notepad (
http://www.pnotepad.org/) que é muito bom e gratuito. Apesar de não ser possível gerar o binário puro, é possível gerar o ELF com o comando
aasm.exe -e (nome_do_arquivo_de_saida) (caminho do arquivo\nome do arquivo). Você pode abrir o arquivo de saída ELF num editor hexadecimal e retirar apenas a parte do seu código (após o cabeçalho).
Há várias outras opções, consultem a documentação. Como não trabalhei com esse software, não conheço suas limitações e nem seus bugs.
O aasm é voltado para o KMD, (
http://brej.org/kmd/index.html), um debugger gráfico com suporte ao ARM. Como ele pode complementar o IDA, tentei também instalá-lo com o Cygwin, mas não consegui devido a problemas com a biblioteca GTK. Mas acho que ainda é possível, só é preciso resolver as dependências. Seria mais fácil para os usuários Windows utilizarem-no com o Cygwin, sem que precisem instalar o Linux inteiro. Como usuário Linux, ainda não tive a oportunidade de instalá-lo diretamente. Mas já observei que há pocotes compilados para o Ubuntu.