2012-01-12 14 views
0

move vA, vBmove-wide vA, vBには、同じ操作と同じオペランドが含まれています。オペコード以外はすべて同じです。私は、アプリケーションの命令で使用されるオペランドを印刷する必要がある状況に陥っています。 指示が表示されたらmove vA, vBmove va(*contents of va*), vb(*contents of vb*)を印刷してください。
これは4バイトレジスタの場合に問題ありません。しかし、私はmove-wideの命令が出てくると、vAの内容と次の仮想レジスタの内容、vBの内容、次の仮想レジスタの内容を印刷する必要があります。
これらを解析する標準的な方法は何ですか?dalvik命令の解析中に可変長引数はどのように解析されますか?

+0

「これらを解析する標準的な方法は何ですか?」ペアの2つのレジスタの値を組み合わせて表示する単一の64ビット値を求める方法を尋ねていますか? – JesusFreke

+0

チャットできますか?私はそれをより良く説明することができましたか? –

+0

私はdalvikという部屋を作成しました –

答えて

0

Dalvikとdxの両方がオープンソースなので、dexファイルに関する質問に答える最良の方法は、ソースを調べることです。 DxはDecodedInstruction.javaの命令を解析します。最初にオペコードをデコードした後、オペコードを使用して残りの命令をデコードします。

public static DecodedInstruction decode(CodeInput in) throws EOFException { 
    int opcodeUnit = in.read(); 
    int opcode = Opcodes.extractOpcodeFromUnit(opcodeUnit); 
    InstructionCodec format = OpcodeInfo.getFormat(opcode); 
    return format.decode(opcodeUnit, in); 
} 
関連する問題