I have two questions about DA addressing mode. For example:
STMDA R0!, {R1-R7}
The start address will be R0 - (7 * 4) + 4
, that is, R0-24
, according to the ARM Architecture reference manual and end_address will be R0
.
So:
R1
will be stored to R0-24
or R0
?R1
is stored to R0-24
, then subsequent stores will grow towards the top of memory (from R0-24
to R0
)?part of the pseudocode is shown below:
address = start_address for i = 0 to 15 if register_list[i] == 1 then Memory[address,4] = Ri address = address + 4
it seems that the growth method of STM has nothing to do with addressing mode when storing data? it always stores data from lower address to higher,the addressing mode only decides the start address based on R0?