Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
есть команда (ядро C54x):
SACCD src, Xmem, cond
src = A = 0x0043211234
Meme = *AR2 = (AR2 = 0x0080)
cond = ANEQ
ASM = 0x14 (-12)
согласно документации должна работать так:
If (cond) Then
(Xmem) = (src) << (ASM – 16)
Else
(Xmem) = (Xmem)
при ASM >= 0 все как ожидается, однако при ASM < 0 в результате вижу циклически сдвинутую старшую часть аккумулятора
(т.е. для приведенного примера вижу *(0x0080) = 0x3214)
это так и должно быть? если да то для чего используется?
лично я логического объяснения не нашел (равно как и описания в документах от TI) - может просто при данной операции не может быть отрицательных значений ASM?