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
Раньше я за собой такого не замечал :(
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
Раньше я за собой такого не замечал :(