Special CharactersInstruction Delimiting a0= r3.h * r2.l, a1 = r3.l * r2.h ;
The second case occurs when a general instruction is combined with one or two memory references for joint issue. The latter portions are set off by a "||" token.
a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
Register NamesRegister names are reserved and may not be used as program identifiers.
Some operations (such as "Move Register") require a register pair. Register pairs are always data registers and are denoted using a colon, eg., R3:2. The larger number must be written firsts. Note that the hardware only supports odd-even pairs, eg., R7:6, R5:4, R3:2, and R1:0.
Some instructions (such as –SP (Push Multiple)) require a group of adjacent registers. Adjacent registers are denoted in the syntax by the range enclosed in parentheses and separated by a colon, eg., (R7:3). Again, the larger number appears first.
Portions of a particular register may be individually specified. This
is written with a dot (".") following the register name and then a
letter denoting the desired portion. For 32-bit registers, ".H"
denotes the most significant ("High") portion. ".L" denotes the
least-significant portion. The subdivisions of the 40-bit registers
are described later.
Accumulatorsone 40-bit registerone 32-bit registertwo 16-bit registersone 8-bit registerData Registers R7.L, r2.h, r4.L, R0.H
Pointer Registers p2, p5, fp, sp
Stack Pointer SPFrame Pointer FPLoop TopLoop CountLoop BottomIndex RegistersModify RegistersLength RegistersBase RegistersFloating PointBlackfin Opcodes