[an error occurred while processing this directive]
|
"Но ни инструкция XCCPART CARRY, ни инструкция OR #8000h, AC0 не имеет parallel enable bit. Значит ли это, что они не могут выполняться параллельно?"
Страница 5-511
This instruction may be executed with the instruction with which it is
paralleled. When this instruction syntax is used and the instruction to be executed conditionally is a store-to-memory instruction, there is a 1-cycle latency for the condition setting.
XCCPART [label, ]cond
|| instruction_executes_conditionally
[label:]
если OR #8000h, AC0 не параллелится (проверять в ассемблере нет возможности, но вроде lk16 не параллелятся), то всегда можно заменить на OR REG, AC0, а регистр инициализировать парралельно с какой-нибудь другой командой.
"На мой взгляд это нонсенс, ведь сначала надо проверить флаг переноса, а уж затем устанавливать 15-й бит в аккумуляторе ас0. Или я в корне неправ?"
Вы и правы и не правы одновременно. Фокус в том, то XCCPART исполняет часть инструкции "безусловно", а часть "условно". Например
BCLR TC1
XCCPART TC1
MOV *AR0+, T0
AR0 будет инкрементирован, а T0 загружен не будет. AD фаза инструкции выполнена (тогда еще не знали что с TC1), а X фаза блокирована. Это конечно несколько необычно, но зато эффективно.
По поводу поребления. У меня ядро 5502 кушает 200-250mA при напряжении 1.26V (на максимуме 300Mhz). Периферия кушает ничтожно мало
E-mail: info@telesys.ru