这些ARM汇编指令的含义是什么?

Nne*_*nez 0 assembly arm

这些说明的结果是什么?(有关如何通过运行我的代码自行回答这个问题的任何建议吗?)

STR.W R8, [R3], #4
STR.W R8, [R3], #4
STR.W R8, [R3], #4
STR.W R8, [R3], #4
STR.W R8, [R3], #4
STR.W R8, [R3], #4
STR.W R8, [R3]
Run Code Online (Sandbox Code Playgroud)

我知道每条指令都会将R3的值加载到R8中,然后将值增加4到R3,但我感到困惑的是,在这些指令结束时,R8中包含的值是多少?

是[R3 + 16]吗?或者是[R3 + 4],[R3 + 8],......,[R3 + 16]?

Var*_*der 6

STR.W R8, [R3], #4
Run Code Online (Sandbox Code Playgroud)

该指令将保存的32位值存储到保存r8的地址中r3.然后它将立即值添加4r3.

A8.6.195 STR (register)

Store Register (register) calculates an address from a base register value
and an offset register value, stores a word from a register to memory. The
offset register value can optionally be shifted. For information about memory
accesses see Memory accesses on page A8-13.

Encoding T2     ARMv6T2, ARMv7
STR<c>.W <Rt>,[<Rn>,<Rm>{,LSL #<imm2>}]

STR<c><q> <Rt>, [<Rn>], <Rm>{, <shift>}    Post-indexed: index==FALSE, wback==TRUE
Run Code Online (Sandbox Code Playgroud)