2017-08-29 2 views
0

est ici addiu opcode instruction (instructions 16 bits, option GCC -mmicromips):encodage instruction addiu (MIPS, GCC)

full instruction: addiu sp,sp,-280 
opcode, hexa:  4F75   
opcode, binary: 1001(instruction) 11101(sp is $29) 110101 

Mon but est de détecter toutes les instructions de ce genre (addiu sp,sp,) et puis décoder l'immédiat, dans le cas ci-dessus (-280) (suivre le sp). Ce que je ne comprends pas est l'encodage de (-280). liés: How to get a call stack backtrace?(GCC,MIPS,no frame pointer)

+0

Vous ne savez pas quel genre de mips c'est? 16 bits? – Jester

+0

Je travaille avec mips 32bit – David

+0

Ce n'est certainement pas 32 bits ... le code machine mips32 pour cette instruction est '27 BD FE E8' avec' FE E8' étant '-280'. – Jester

Répondre

1

microMips a une instruction ADDIUSP spécialisée qui l'assembleur a choisi d'utiliser. Les 6 premiers bits sont l'opcode 010011, les 9 bits suivants sont codés 110111010 = 0x1BA et le LSB est réservé au 1.

Le codage pour les utilisations immédiates utilise une mise à l'échelle de 4 et une extension de signe. Étant donné que 0x1BA = -70 (en utilisant 9 bits), la valeur est -70 * 4 = -280.