Задать вопрос
@LeoMay
Студент

Как себя ведёт регистр R15 при использовании команды ADD в ARM?

Есть такой листинг:
ADD R1, R0, #3971 @ R1 = 0 + 3971 = 3971
ADD R15, R3, R1 @ R15 = 9928 + 3971=13899 ?? Видимо я что-то не понял

Найти значение регистра R15 после выполнения кода.

Содержание регистра следующее:
R0 = 0
R1 = 4131
R2 = 7435
R3 = 9928
...
R15 = 8

Правильный ответ: 14059.


Почему ответ 14059, хотя вроде бы должно быть 13899
  • Вопрос задан
  • 140 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Какую логику мне надо использовать, чтобы решать задачи такого типа? Что нужно учитывать?
1. Прочитать правила. Особенно пункт 5.12
2. Загуглить. Раз у нас RISC, то гуглим что-то типа "arm asm add"
Нашлась документация keil и там как раз что-то похожее. Там даже про какой-то нюанс с R15 есть, но я не вчитывался.
На второй строке будет habr

После первой инструкции будет сложено R0 и константа 3971, а результат положен в R1.
После второй - будет сложен R3 и R1, а результат в R15
У меня получилось: 13 899
Откуда 14059 я не понял - может задача кривая, а может я дурак.

UPD: я дурак. R15 - это счётчик комманд ещё. Так что видимо он ещё успевает уйти вперёд после сложения
https://osdev.fandom.com/ru/wiki/Регистры_общего_н...
Пусть меня дополнят те, кто ещё шарит
Ответ написан
32bit_me
@32bit_me
Программист, встраиваемые системы
3971 + 0 + 9928 = 13899
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы