[an error occurred while processing this directive]
|
Камень 5509А. В проекте указан явно (CHIP_5509A)
используемая компилером команда адресации не зависит от бита совместимости (во всяком случае об этом в даташите ни слова):
*ARn(T0/AR0)
ARn is not modified.
ARn is used as a base
pointer. The 16-bit signed constant in T0 or
AR0 is used as an offset from that base
pointer.
Data-memory (Smem, Lmem)
Memory-mapped register
(Smem, Lmem)
Register bit (Baddr)
I/O-space (Smem)
собственно у меня нет притензий к используемому компилятором типу адресации - непонятно зачем он вычисляет индекс в Т0 а для получения данных использует AR0 ?
А локальная задача приведена здесь http://www.telesys.ru/wwwboards/dsp/163/messages/46773.shtml . Ожидаемый результат - модификация элементов массива.
Полученный результат - массив остается девственно нетронут.
Перестал работать цикл (исходники приведены). Полез в АСМ (может не
стоило?) и обнаружил, что
0150E1 a4310148c9 MOV *(#148c9h),T0
0150E6 5040 SFTL T0,#1
0150E8 4014 ADD #1,T0
0150EA a96b MOV *AR3(AR0),AR1
индекс "готовится" в Т0, а при выборке из памяти используется AR0. Если MOV *AR3(Т0),AR1. и MOV *AR3(AR0),AR1 - это одно и тоже,тогда остается признать себя _пользователем_ и перестать баламутить конфу.
ЗЫ: за "_пользователя_" спасибо...
E-mail: info@telesys.ru