beq
и bne
- условные ветви;другими словами, они являются условными версиями безусловной ветви b
.eq
и ne
- это два разных кода состояния;они описаны в разделе A7.3.beq
означает ветвь, если она равна , а bne
означает ветвь, если она не равна .
Инструкция ветвления b
имеет два разных кодирования в режиме Thumb.Возможно, вы видите кодировку T1, описанную в разделе A7.7.12:
B<c> <label>
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 0 1 [-<cond>--] [--------imm8---------]
В этой кодировке код состояния (например,eq
или ne
) кодируются непосредственно в инструкции, в битах 8-11.Разборка из objdump отображает код состояния вместо <c>
выше.Таким образом, используя таблицу кодов условий в разделе A7.3, вы бы закодировали beq
как 11010000[imm8]
.