в АРМе (ARM7TDMA) можно это делать и все там по-простому (есть документ на сайте arm.com)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено yes 24 ноября 2004 г. 16:56
В ответ на: чего делать нельзя ? объявлять указатель на int ? Присваивать ему значение ? Или , может, разыменовывать ? отправлено DASM 24 ноября 2004 г. 16:08

если я не путаю

из ядра (не чипа) торчит A31-A2 и BE3-0
то есть нету A1 и A0
при чтении происходит - всегда чтение по словам, а затем слово циклически сдвигается, для того чтобы в младший байт регистра попал младший байт указанный A31-A0
при этом если используются инструкции LDRB LDRH старшая часть маскируется (забивается либо 0 либо знаком)
если интструкция LDR по невыравняному адресу (кстати и LDRH может быть тоже невыровнена) - то все точно так же, но не маскируется
то есть если читать из памяти в которой 01 02 03 04 (ВigЕnd)
в регистре будет
01020304 (выравн)
04010203 (А1-0=01)
03040102 (10)
02010304 (11)

по-моему BEx на чтение тоже активны - то есть при чтении байта активен один из них, при чтении слова 2

при записи наоборот, только ВЕ играют большую роль - записывается только в тот байт, для которого ВЕ=0
так как при STR все BE активны, то и будет записываться в память сдвинутое значение...

но какую систему памяти внутри чипа сделали - ХЗ - обычно в регистры BE просто игнорируют
в автоматах перехода на 8-ми/16-ти разрядную внешнюю память - извращаются, чтобы сделать A0,A1
во внутренней памяти делают обычно как я написал

теоретически можно использовать STR/LDR по невыровненным адресам для всяких извращений, но это рисковое программирование

я не слышал про эксепшн при таких операциях, но нет проблемы сделать чип так чтоб оно было

вот блин целый мануал получился :)
это потому что про Украину хочу написать, но сдерживаюсь (типа сублимация)
надеюсь полезно будет

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru