2017-08-29 21 views
0

がADDIU命令オペコードである(16ビット命令、GCCオプション-mmicromips):ADDIU命令エンコーディング(MIPS、GCC)

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

私の目的は、この種のすべての命令を検出することである(addiu sp,sp,) と上記の場合(-280)(spに従うために)即時にデコードします。 私が理解できないのは、(-280)のエンコーディングです。 にリンクされています。How to get a call stack backtrace?(GCC,MIPS,no frame pointer)

+0

どのようなミップの種類がわかりませんか? 16ビット? – Jester

+0

私はmips 32ビットで作業しています – David

+0

これは確かに32ビットではありません...その命令のmips32マシンコードは 'FE E8'が' -280'の '27 BD FE E8'です。 – Jester

答えて

1

microMipsには、アセンブラで使用するように特化されたADDIUSP命令があります。最初の6ビットはオペコード010011であり、次の9ビットは符号化された即値110111010 = 0x1BAであり、LSBは1で予約されている。

即時のエンコードでは、4倍と符号拡張でスケーリングが使用されます。 0x1BA = -70(9ビットを使用)の場合、値は-70 * 4 = -280です。