GNU-ассемблер для ARM (AArch32) принимает константы base-2 в формате 0b0101
везде, где принимается 0x
или другой числовой литерал.Удивило, что вы не просто попробовали это, так как уже догадались.
Например, MOV R2, #0b0010000000001100
собирается в
e302200c movw r2, #8204 ; 0x200c
с gcc -c -marm arm-binary.s
.
YouЯ хотел бы использовать ldr r2, =0b010101
, если он не кодируется с помощью одной инструкции mov
, например, -mcpu=cortex-m4 -mthumb
mov r2, #0b111000
ldr r2, =0b010101
ldr R2, =0b0010000000001100
собирается с arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb arm-binary.s
в этот машинный код:
00000000 <.text>:
0: 2238 movs r2, #56 ; 0x38
2: f04f 0215 mov.w r2, #21
6: f242 020c movw r2, #8204 ; 0x200c