2005-02-04

lumag: (Default)
2005-02-04 11:14 pm
Entry tags:

Заскок? Глюк? А, может быть, просто пора на пенсию?

Blackfin — хороший процессор. Быстрый. Многоразрядный. Там есть полноценные 32-битные операции. И два 40-битных аккумулятора. Но! Адрес в регистр надо загружать за две операции: сначала верхюю половину, потом нижнюю (а можно и наоборот). Выглядит это, например, так:

p0.h = HI(EVT_NMI_ADDR);
p0.l = LO(EVT_NMI_ADDR);

Потом чтение/запись. Например так:

w [p0] = r0

Естественно, вторая строчка пишется методом c&p.
Минут десять размышлял, почему виснет такой код:

p0.h = HI(EVT_NMI_ADDR);
p0.l = HI(EVT_NMI_ADDR);
w[p0] = r0

Раньше я за собой такого не замечал :(