Как именно я могу найти паллиндром 32-битного числа, используя сборку ARM? - PullRequest
0 голосов
/ 15 февраля 2020

Я пытался найти код сборки, чтобы определить, является ли данное число палиндромом. Я получил код онлайн. Но я не могу понять команду 'movu'. Кто-нибудь может объяснить?

mov R0,1044480
mov R3,0
mov R4,31
movu R2,0x0001
mov R5,0
andu R1,R0,0xffff

.loop:
and R3,R2,R1
lsl R2,R2,1
lsl R3,R3,R4
add R5,R5,R3
sub R4,R4,2
cmp R4,0
bgt .loop
lsr R0,R0,16
lsr R5,R5,16
sub R0,R5,R0
cmp R0,0
beq .palin
mov R0,0

b .exit

.palin:
mov R0,1

.exit:

1 Ответ

0 голосов
/ 15 февраля 2020

Здесь есть пара вопросов. Почему вы делаете это в сборке, когда вы не слишком знакомы с набором инструкций? Для какого устройства вы пишете этот ассемблерный код? Конечно, если вы делаете сборку, вы должны хотя бы иметь документацию по набору инструкций для процессора?

Теперь давайте разберемся с самим вопросом. Мову это мнемони c для MOV Unsigned. По сути, это работает так же, как инструкция MOV, с той разницей, что она не изменяет регистр состояния, в отличие от MOV. Таким образом, вы можете переместить регистр в пункт назначения без изменения, например, флаги Z, C или N.

...