Что делают эти сборочные линии ARM? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь ответить на вопрос о задании, и я не уверен, прав ли я или нет.

Вопрос:

Кратко объясните цели инструкций в строках3, 4, 7, 8, 9, 10, 11, 12 и 13.

Мой ответ:

3 - загружает (адрес / значение?) Переменной A в R1.

4 - перемещает постоянную MAX в R2.

-

7 - сравнивает содержимое R2 с постоянной 0.

8 - заканчиваетсяветвь (цикл), если R2 = 0

9 - загрузка содержимого R1 в R4

10 - добавление данных в R3 с R4, результат сохраняется в R3.

11- Добавляет данные в R1 с константой 4, результат сохраняется в R1.

12 - Вычитает данные в R2 с константой 1, результат сохраняется в R2.

13 - Возвращается к началу цикла loop1

1. .global _start
2. _start:
3. LDR R1, =A
4. MOV R2, #MAX
5. MOV R3, #0
6. loop:
7. CMP R2, #0
8. BEQ end
9. LDR R4, [R1]
10. ADD R3, R4
11. ADD R1, #4
12. SUB R2, #1
13. B loop
14. end: ...
15. .data
16. .equ MAX, 5
17. A: .rept MAX
18. .word 0x00
19. .endr

1 Ответ

1 голос
/ 05 мая 2019

Я думаю, что все предоставленные вами ответы верны, кроме следующих:

a)

3 - загружает (адрес / значение?) Переменной Aв R1.

Строка 3 поместит ячейку памяти строки 17 в R1.

b)

8 - Заканчивает ветвь (цикл) если R2 = 0

Если R2 == 0, то выполнение перейдет к строке 14

c)

9 - загрузить содержимоеR1 в R4

Загрузить содержимое адреса памяти, хранящегося в R1, в R4.Например, если R1 = 0x01234567 и адрес памяти 0x01234567 имеет значение 0x89abcdef, то после выполнения строки 9 R4 будет содержать значение 0x89abcdef

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