这些说明的结果是什么?(有关如何通过运行我的代码自行回答这个问题的任何建议吗?)
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]?
STR.W R8, [R3], #4
Run Code Online (Sandbox Code Playgroud)
该指令将保存的32位值存储到保存r8的地址中r3.然后它将立即值添加4到r3.
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)