Я новичок в сборке, поэтому, пожалуйста, дайте мне знать, если я забуду важную информацию.Мое задание касается работы с памятью, и я немного запутался в получении адресов из ячеек памяти против получения значений в указанных местах.
Если говорить точнее, у меня есть массив целых чисел.Я хотел бы иметь регистр, указывающий на первый элемент, и регистр, указывающий на последний элемент.Мне дан указатель на первый элемент в регистре 0, r0, и количество элементов как r1.
@ Given values:
@ r0 - pointer to first item in array
@ r1 - number of items in array
mov r3, r1 @ r3 = (r1)
lsl r3, #2 @ r3 = (r1*4)
sub r3, r3, #4 @ r3 = (r1*4)-4
add r3, r0, r3 @ r3 = r0+(r1*4-4)
ldr r2, [r3] @ r2 points to last item
ldr r1, [r0] @ r1 points to first item
Учитывая эти два, я мог бы получить последний элемент с (r0 + r1 * 4 - 4), правильно?С этим значением я пытаюсь переместить адрес этого последнего элемента в r2 ниже.Это правильный способ получения и хранения адресов, или я что-то упустил?