movw
, за которым следует movt
, является распространенным способом загрузки 32-разрядного значения в регистр. Это эквивалентно объединению этих двух непосредственных значений с ИЛИ, при этом movt
является старшим 16-разрядным. В этом случае r1 = (movt immediate value << 16) | (movw immediate value))
.
3242ba66 f6454118 movw r1, 0x5c18 // r1 = 0x5c18
3242ba6a 466f mov r7, sp
3242ba6c f6c0415a movt r1, 0xc5a // r1 = (r1 & 0xffff) | (0xc5a << 16)
3242ba70 f2460002 movw r0, 0x6002
3242ba74 f6c0405a movt r0, 0xc5a
3242ba78 4479 add r1, pc // r1 = r1 + pc
3242ba7a 4478 add r0, pc
3242ba7c 6809 ldr r1, [r1, #0] // r1 = *(r1 + 0)