Arm 无法理解特定的LDR命令

Arm 无法理解特定的LDR命令,arm,disassembly,ida,Arm,Disassembly,Ida,在尝试使用IDA pro反汇编我的学校图书馆的簿记应用程序时,我遇到了这个LDR语句,我无法编辑它 我想将某本书的页数增加到一个更高的值,因此我找到了ARM指令,它在其中分配了后者,并将其更改为一个更高的值 原件: LDR R3, =(dword_8C46D0 - 0x3DBCDA) 当我尝试将地址名称重命名为: dword_8C43D4 我收到以下错误消息: 无法将字节重命名为“dword_8C43D4”,因为该名称具有保留前缀 那么,这些保留前缀是什么?我该如何解决这个问题 另外,

在尝试使用IDA pro反汇编我的学校图书馆的簿记应用程序时,我遇到了这个LDR语句,我无法编辑它

我想将某本书的页数增加到一个更高的值,因此我找到了ARM指令,它在其中分配了后者,并将其更改为一个更高的值

原件:

LDR     R3, =(dword_8C46D0 - 0x3DBCDA)
当我尝试将地址名称重命名为:
dword_8C43D4

我收到以下错误消息:

无法将字节重命名为“dword_8C43D4”,因为该名称具有保留前缀

那么,这些保留前缀是什么?我该如何解决这个问题


另外,我在哪里可以获得使用ida pro学习反汇编的简短且信息丰富的教程

只要使用你想要的任何十六进制值;不是什么标签。如果需要0x8c43d4,则可以使用
ldr r3,=0x8c43d4
。“dword_8C46D0”是什么意思
LDR Rn,=value
仅在“Rn”中加载一个32位的值。arm操作码只有32位长,因此您无法加载32位常量(操作码中的位表示其他内容,如add、sub等)。ldr rD,=某种东西是各种汇编程序支持的伪指令,因为您无法加载任何32位值作为立即数(在32位指令32+opcode+dest寄存器规范中不能小于或等于32)。右边的值必须是汇编程序可以计算成数字的值,如果它可以做标签数学,好的。如果它可以做任何数学,好的,否则就只是一个标签或一个值。该值意味着一个地址(标签)但是无论我在哪里使用过标签字符串,它们都允许您使用即时值而不是标签字符串。如果您想了解有关ida pro的信息,请与技术支持部门联系。@artlessnoise谢谢,所以在我的第一行中,dword_8C46D0是标签,十六进制值0x3DBCDA存储在其中?我不知道ida pro的具体情况,但我想说它似乎已经计算出任意32位常量加载的nt是一个地址,然后将该地址分解为一个巨大的负偏移量,它认为这是一个符号。。。