TriCore (MED17, EDC17, Simos, MG1/MD1) e PowerPC MPC5xx/MPC56x e e200 (EDC16, MED9, ME9). Busque pelo mnemônico, pelo que a instrução faz ou cole o hexa de uma instrução — e decodifique um trecho inteiro copiado do hex dump.
endereço: tem o endereço descartado — e, se o campo acima estiver vazio, ele vira o endereço inicial. No TriCore, "palavras como no manual" quer dizer 0480000D em vez de 0D 00 80 04.TriCore. A codificação de cada forma (máscara e valor) foi extraída do tricore.sinc do
Ghidra, o mesmo arquivo que o Ghidra usa para desmontar — não foi digitada à mão. Por isso o
decodificador escreve a instrução do mesmo jeito que o Ghidra (ld.w d15,[a15]0x4), e as
constantes saem em hexa com #. As formas marcadas TC1.6+ só
existem nos núcleos AURIX (TC2xx/TC3xx, MG1, MD1); Rider-D+ a partir do
TC1.3.1. As descrições em português são escritas à parte e casadas pelo mnemônico.
PowerPC. A tabela foi montada a partir dos manuais (UISA, RCPU do MPC5xx e o do e200z). Cada linha diz
só quais campos são fixos; a máscara sai dali. Em "escrever como o Ghidra", o texto sai igual ao listing
da linguagem PowerPC padrão: rlwinm r3,r3,0x0,0x18,0x1f, mfspr r0,lr,
subi para imediato negativo, SPR sem nome como spr050 (o nome do MPC5xx, EIE, vai
para a observação). Em "o manual", com os mnemônicos simplificados: clrlwi r3,r3,24,
mflr r0, mtspr EIE,r0. sync/msync e
eieio/mbar são a mesma palavra — o nome segue o núcleo escolhido, assim como o nome
dos SPR (528 é MI_GRA no MPC5xx e IVOR32 no e200). O e200 em modo VLE (instruções de 16 bits,
e_ e se_) não está aqui.
Conferido contra o Ghidra 12. Trechos de 32 KB de código real desmontados nos dois, instrução por instrução: MED17.5.2 (TriCore 1.3) e MG1 (AURIX) saíram 100% idênticos; MED9 (MPC56x) 16.382 de 16.384 — as duas que sobram são dado no meio do código.
Numeração de bits. No diagrama do PowerPC o bit 0 é o mais significativo, como no manual
(é a numeração de MB e ME do rlwinm). No TriCore o bit 0 é o menos significativo. Os campos em
azul são variáveis; o resto é a parte fixa da instrução.
Ordem dos bytes. PowerPC é big-endian: a palavra 7C0802A6 aparece no hex dump como
7C 08 02 A6. TriCore é little-endian e de tamanho variável: o bit 0 do primeiro byte diz se a
instrução tem 16 (bit 0 = 0) ou 32 bits (bit 0 = 1), e isync (0x04C0000D) aparece
como 0D 00 C0 04.
Desvios. O alvo é calculado a partir do endereço informado. Sem endereço, conta a partir de zero — os saltos relativos ficam certos entre si, mas não batem com o mapa de memória.