我正在尝试反转获取字符串并计算其校验和的简单代码。我一直试图理解每条指令,但它们看起来与 arm 文档中所说的不同。这是完整的代码(使用 no$gba 调试器)

我已经看到代码,知道一旦计算出校验和,它就会存储在 r0 寄存器中。文档指定 EOR 接收 2 个参数,而这里采用 4. eor r3,r3,r0,asr 8h我发现这将类似于 r3 = (r3^r0)>>8 但我不是真的当然。此外,C/C++ 没有指定 >> 运算符是否执行算术或逻辑移位 (asr)
mov 的指令也会造成同样的混淆。子研究所。将在诸如r2-- 之类的东西中反转;或 r2=r2-1;
谢谢你的时间。
编辑:校验和是 2 个字节长,我举了一些例子:
字符串:AAAAAAB -- 校验和:0xB649(调试时,小端写入)
字符串:AAAAAAA -- 校验和:0x68BC(注意:无法通过对不同校验和样本执行操作来计算校验和)