Создание указателей на местоположения в массиве - PullRequest
0 голосов
/ 10 февраля 2019

Я новичок в сборке, поэтому, пожалуйста, дайте мне знать, если я забуду важную информацию.Мое задание касается работы с памятью, и я немного запутался в получении адресов из ячеек памяти против получения значений в указанных местах.

Если говорить точнее, у меня есть массив целых чисел.Я хотел бы иметь регистр, указывающий на первый элемент, и регистр, указывающий на последний элемент.Мне дан указатель на первый элемент в регистре 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 ниже.Это правильный способ получения и хранения адресов, или я что-то упустил?

1 Ответ

0 голосов
/ 10 февраля 2019

Ваши первые четыре оператора правильно помещают адрес последнего элемента в массиве в r3.

Ваши последние два оператора загружают значение последнего элементав r2 и значение первого элемента в r1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...