[an error occurred while processing this directive]
|
Вот что можно:
Условный переход. (кратко, у него много форм, но суть одна)
IF CC JUMP pcrelative;
IF !CC JUMP pcrelative;
Сравнение и установка спец. бита CC
CC = Dreg == Dreg ; /* equal, register, signed (a) */
CC = Dreg == imm3 ; /* equal, immediate, signed (a) */
CC = Dreg < Dreg ; /* less than, register, signed (a) */
CC = Dreg < imm3 ; /* less than, immediate, signed (a) */
CC = Dreg <= Dreg ; /* less than or equal, register, signed
(a) */
CC = Dreg <= imm3 ; /* less than or equal, immediate, signed
(a) */
CC = Dreg < Dreg (IU) ; /* less than, register, unsigned
(a) */
CC = Dreg < uimm3 (IU) ; /* less than, immediate, unsigned (a)
*/
CC = Dreg <= Dreg (IU) ; /* less than or equal, register,
unsigned (a) */
CC = Dreg <= uimm3 (IU) ; /* less than or equal, immediate
unsigned (a) */
То же самое можно делать с пойнтерами
И с аккумуляторами
CC = A0 == A1 ; /* equal, signed (a) */
CC = A0 < A1 ; /* less than, Accumulator, signed (a) */
CC = A0 <= A1 ; /* less than or equal, Accumulator, signed (a) */
Можно эту муху-CC двигать туда-сюда.
Dreg = CC ; /* CC into 32-bit data register, zero-extended (a)
*/
statbit = CC ; /* status bit equals CC (a) */
statbit |= CC ; /* status bit equals status bit OR CC (a) */
statbit &= CC ; /* status bit equals status bit AND CC (a) */
statbit ^= CC ; /* status bit equals status bit XOR CC (a) */
CC = Dreg ; /* CC set if the register is non-zero (a) */
CC = statbit ; /* CC equals status bit (a) */
CC |= statbit ; /* CC equals CC OR status bit (a) */
CC &= statbit ; /* CC equals CC AND status bit (a) */
CC ^= statbit ; /* CC equals CC XOR status bit (a) */
Ну и ещё, блин, ребята из AD , так и быть от доброты душевной, оставили инверсию
CC = ! CC ; /* (a) */
In the syntax, comment (a) identifies 16-bit instruction length.
И самое гадкое, что ВСЕ эти инструкции НЕ СПАРАЛЛЕЛИВАЮТСЯ НИ С ЧЕМ!
E-mail: info@telesys.ru