如何正确读取ARM指令编码?基础编码后二级编码识别异常求助
ARM指令集编码解析困境:无法识别第二个有效编码
我目前正依据ARM指令集参考手册尝试读取指令,但遇到了一个难题——基础编码(数据处理和杂项指令)之后的第二个有效编码始终无法匹配到合法指令类型。我已经尝试重新解读编码规则,逐行解析二进制数据,但问题依然存在。
以下是我收集到的相关代码与解析信息:
function = 0x2d02dd bit length: 32 lines to read = 4 (1 line == 32 bits read) buffer = 0x2d02dd b0 80 b5 6f 10110000 10000000 10110101 01101111 bufferb = 0x2d02dd bit = 0x2d02dd encoding = 0x2d02dd cond = 1011 Mnemonic extention: LT Meaning (integer): Signed less than Meaning (floating point){a}: Less than, or unordered a. Unordered means at least one NaN operand Condition flags: N != V op1 = 000 unspecified1 = 01000000010110101011 op = 0 unspecified2 = 1111 encoding group: data processing and miscellaneous instructions bitc = 4 encoding = 0x2d02e1 cond = 0100 zero1 = 0 zero2 = 1 op = 1 op1 = 00111 unspecified1 = 101101100001 op2 = 0011 unspecified2 = 1010 encoding group: b0 80 b5 6f function = 0x2d02dd i*length = 0 buffer = 0x2d02e1 46 7b 61 3a 01000110 01111011 01100001 00111010 bufferb = 0x2d02e1 bit = 0x2d02e1 encoding = 0x2d02e1 cond = 0100 Mnemonic extention: MI Meaning (integer): Minus, negative Meaning (floating point){a}: Less than a. Unordered means at least one NaN operand Condition flags: N == 1 op1 = 011 unspecified1 = 00111101101100001001 op = 1 unspecified2 = 1010 encoding group: 46 7b 61 3a function = 0x2d02dd i*length = 4 buffer = 0x2d02e5 61 f9 60 00 01100001 11111001 01100000 00000000 bufferb = 0x2d02e5 bit = 0x2d02e5 encoding = 0x2d02e5 cond = 0110 Mnemonic extention: VS Meaning (integer): Overflow Meaning (floating point){a}: Unordered a. Unordered means at least one NaN operand Condition flags: V == 1 op1 = 000 unspecified1 = 11111100101100000000 op = 0 unspecified2 = 0000 encoding group: data processing and miscellaneous instructions bitc = 4 encoding = 0x2d02e9 cond = 0010 zero1 = 0 zero2 = 0 op = 0 op1 = 11011 unspecified1 = 100001100000 op2 = 0000 unspecified2 = 0111 encoding group: 61 f9 60 00 function = 0x2d02dd i*length = 8 buffer = 0x2d02e9 21 b8 60 07 00100001 10111000 01100000 00000111 bufferb = 0x2d02e9 bit = 0x2d02e9 encoding = 0x2d02e9 cond = 0010 Mnemonic extention: CS{b} Meaning (integer): Carry Set Meaning (floating point){a}: Greater than, equal, or unordered a. Unordered means at least one NaN operand Condition flags: C == 1 b. HS (unsigned higher or same) is a synonym for CS op1 = 000 unspecified1 = 11011100001100000000 op = 0 unspecified2 = 0111 encoding group: data processing and miscellaneous instructions bitc = 4 encoding = 0x2d02ed cond = 1111 zero1 = 0 zero2 = 0 op = 0 op1 = 10000 unspecified1 = 100000000000 op2 = 0000 unspecified2 = 0001 encoding group: miscellaneous instructions 21 b8 60 07 function = 0x2d02dd i*length = 12 function = 0x2d02dd
内容的提问来源于stack exchange,提问作者Clark Kent
相关产品推荐
相关产品推荐

