Estou tentando localizar uma exceção em algum código assembly ARM existente anteriormente. A linha em questão é:
ldr x0, [x21, x19, lsl #3]
O resultado da equação acima é x0
um endereço de memória inválido, que o código subsequente tenta usar.
Eu sei que ele lsl
está realizando um deslocamento para a esquerda 3, mas não tenho certeza no que ele está realmente realizando o deslocamento. Eu não vi valores à esquerda de uma mudança antes. Uma mudança normalmente é o valor a ser mudado, até que ponto e em que direção. Se a linha acima estiver usando x21 e x19, como eles estão sendo usados no turno? Um dos registradores tem os 32 bits inferiores e o outro os 32 bits superiores?
x19
atualmente é 0x0
x21
é atualmente um valor maior que 0x0
Não posso alterar a linha acima, mas posso alterar os valores de x19 e x21. Qualquer ajuda na interpretação disso seria apreciada.
Rastreei o código assembly, encontrei os valores de todos os registros e pesquisei na internet como decodificar a linha em questão