реклама на сайте
подробности

 
 
> Вопросы по R15, Счётчик команд
Diablic
сообщение Dec 22 2010, 10:18
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 22-12-10
Пользователь №: 61 795



Здравствуйте, недавно начал разбираться в архитектуре ARM процессоров.
Изучал описание по этому адресу, а также на www.gaw.ru.

собственно мой вопрос заключается вот в чём:

Цитата
Если подразумевается переход на инструкцию ARM режима, все команды которого хранятся по адресам кратным 4, два самых младших разряда адреса должны быть 0, иначе результат непредсказуем.
При чтении регистра R15 в ARM режиме, в регистр результата попадает значение, равное: адресу команды чтения + 8.

thisAddr: MOV R1,R15 ; R1:= R15+8 (thisAddr+8)


Если регистр R15 указывает на инструкцию, которая должна выполнятся после текущей инструкции, то почему при чтении происходит смещение на 8?

аналогичный вопрос про запись:

Цитата
Исключением из этого правила является сохранение R15 командами STR или STM. Они могут сохранять значение R15 как со смещением 8 подобно остальным инструкциям, либо со смещением 12.


почему смещение происходит на 8 или 12?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
scifi
сообщение Dec 22 2010, 10:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Это вызвано наличием конвейера. Как пишет ARM7TDMI Technical Reference Manual,
Цитата
The program counter points to the instruction being fetched rather than to the instruction being executed. This is important because it means that the Program Counter (PC) value used in an executing instruction is always two instructions ahead of the address.
Go to the top of the page
 
+Quote Post
Diablic
сообщение Dec 22 2010, 10:39
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 22-12-10
Пользователь №: 61 795



Спасибо.
Тогда, в случае записи:
если инструкция не содержит регистр смещения - происходит смещение на 8(благодаря конвееру)
если такой регистр есть, то происходит смещение на 8+4(регистр)=12.
я правильно понимаю?
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 22 2010, 14:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Другая цитата, на этот раз из ARM Architecture Reference Manual:
Цитата
An exception to the above rule occurs when an ARM STR or STM instruction stores R15. Such instructions can store either the address of the instruction plus 8 bytes, like other instructions that read R15, or the address of the instruction plus 12 bytes. Whether the offset of 8 or the offset of 12 is used is IMPLEMENTATION DEFINED. An implementation must use the same offset for all ARM STR and STM instructions that store R15. It cannot use 8 for some of them and 12 for others.

То есть ВСЕ инструкции STR и STM используют одно и то же смещение в данном процессоре ARM. Один процессор может использовать смещение 8, другой - 12. Там даже есть пример кода, выясняющий величину этого смещения для данного процессора, если очень хочется его узнать.
Go to the top of the page
 
+Quote Post
muravei
сообщение Dec 23 2010, 14:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



А как засовывается 32 бита в регистр? Что константа следует за командой -сомнительно , а в саму MOV -нелезет. sm.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 23 2010, 17:07
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(muravei @ Dec 23 2010, 20:13) *
А как засовывается 32 бита в регистр? Что константа следует за командой -сомнительно , а в саму MOV -нелезет. sm.gif

Стыдно такое не знать. Посмотрите листинг дизассемблера любого более-менее нетривиального кода и увидите, что обычно для этого используется LDR Rm, [PC, #n]. Как раз константа следует, но не за командой, а, как правило, за функцией.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016