ARM как правильно читать кодировку инструкции - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь прочитать инструкцию на основе справочного руководства по набору команд 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

https://bpaste.net/show/5bb012932588

...