ARM DA(减量后)寻址模式的第一个地址是哪个?

ARM DA(减量后)寻址模式的第一个地址是哪个?,arm,memory-address,decrement,addressing-mode,Arm,Memory Address,Decrement,Addressing Mode,关于DA寻址模式,我有两个问题。例如: STMDA R0!, {R1-R7} 根据ARM架构参考手册,起始地址将为R0-7*4+4,即R0-24,结束地址将为R0 因此: R1的值将存储到R0-24还是R0? 如果R1存储到R0-24,那么随后的存储将从R0-24增长到R0,直至内存顶部? 当使用ARM多存储和加载时,寄存器值总是按升序加载/存储在内存中。因此,当使用递减多存储时,寄存器会向后写入内存。STMDA指令有效地分解为以下步骤: 将R7存储在R0 将R6存储在R0-4 将R5存储在R

关于DA寻址模式,我有两个问题。例如:

STMDA R0!, {R1-R7}
根据ARM架构参考手册,起始地址将为R0-7*4+4,即R0-24,结束地址将为R0

因此:

R1的值将存储到R0-24还是R0? 如果R1存储到R0-24,那么随后的存储将从R0-24增长到R0,直至内存顶部?
当使用ARM多存储和加载时,寄存器值总是按升序加载/存储在内存中。因此,当使用递减多存储时,寄存器会向后写入内存。STMDA指令有效地分解为以下步骤:

将R7存储在R0 将R6存储在R0-4 将R5存储在R0-8 将R4存储在R0-12 将R3存储在R0-16处 将R2存储在R0-20 将R1存储在R0-24 因为写回,所以从R0中减去28-即!。 因此,要回答您的问题:

R1的值将存储在R0-24。这里,我指的是在执行指令之前,而不是之后的R0值。您正在使用写回-这个因此,在指令之后,R0将从中减去28

R1存储在R0-24,但如上所述,R1是最后一个将其值存储在内存中的寄存器。R7首先存储,随后的存储在内存中向下增长


我必须承认,我不知道有任何文件支持这个答案。还有,我已经有一段时间没有做任何ARM编码了。然而,我肯定记得我想知道ARM存储是如何在一个递减的多存储中注册的。我通过编写一个简短的程序来了解这一点。

当使用ARM多存储和加载时,寄存器值总是按升序加载/存储在内存中。因此,当使用递减多存储时,寄存器会向后写入内存。STMDA指令有效地分解为以下步骤:

将R7存储在R0 将R6存储在R0-4 将R5存储在R0-8 将R4存储在R0-12 将R3存储在R0-16处 将R2存储在R0-20 将R1存储在R0-24 因为写回,所以从R0中减去28-即!。 因此,要回答您的问题:

R1的值将存储在R0-24。这里,我指的是在执行指令之前,而不是之后的R0值。您正在使用写回-这个因此,在指令之后,R0将从中减去28

R1存储在R0-24,但如上所述,R1是最后一个将其值存储在内存中的寄存器。R7首先存储,随后的存储在内存中向下增长


我必须承认,我不知道有任何文件支持这个答案。还有,我已经有一段时间没有做任何ARM编码了。然而,我肯定记得我想知道ARM存储是如何在一个递减的多存储中注册的。我通过编写一个简短的程序找到了答案。

搜索arm架构参考手册


形成的第一个地址是,并且是基址寄存器的值减去中指定的寄存器数的四倍,再加上4。后续地址是通过将前一个地址增加4来形成的。为arm架构参考手册中指定的每个寄存器生成一个地址。

搜索arm


形成的第一个地址是,并且是基址寄存器的值减去中指定的寄存器数的四倍,再加上4。后续地址是通过将前一个地址增加4来形成的。为在中指定的每个寄存器生成一个地址。

伪代码的一部分如下所示:

地址=起始地址 对于i=0到15 如果寄存器列表[i]==1,则 内存[地址,4]=Ri 地址=地址+4

STM的增长方式似乎与存储数据时的寻址方式无关? 它总是将数据从较低的地址存储到较高的地址,仅在寻址模式下
根据R0决定起始地址?

伪代码的一部分如下所示:

地址=起始地址 对于i=0到15 如果寄存器列表[i]==1,则 内存[地址,4]=Ri 地址=地址+4

STM的增长方式似乎与存储数据时的寻址方式无关? 它总是将数据从较低的地址存储到较高的地址,仅在寻址模式下
根据R0确定起始地址?

+1绝对正确。ARM体系结构参考手册中记录了这种行为。谢谢,我认为手册将R0-24定义为起始地址有点模糊,该起始地址只是内存的最小地址,而不是存储的第一个地址。描述指令操作的伪代码非常清楚,和Pourqoui的描述相符+1绝对正确。ARM架构参考手册中记录了这种行为。谢谢,我认为手册将R0-24定义为起始地址有点含糊不清,这是sta
rt_地址只是内存的最小地址,而不是存储的第一个地址。描述指令操作的伪代码非常清楚,并且与Pourquoi的描述相匹配。