Address Generation Unit
SC140 DSP Core Reference Manual
2-53
Fractional moves are supported only to DALU registers. Moves from memory are put in the high portion
of the data register, sign-extended to the extension, and zero-filled in the low portion. MOVE.L and
MOVE.2L may also be considered fractional moves since alignment in the destination register is the same
for integer long moves and fractional long moves. A schematic representation of fractional moves from
memory to 40-bit data registers is shown in Figure 2-17.
.
Figure 2-17. Fractional Move Instructions
The four instructions MOVES.F, MOVES.2F, MOVES.4F, and MOVES.L move data from data registers
to the memory with scaling and limiting. The first three operate on 16-bit data. The MOVES.L instruction
performs 32-bit scaling and limiting before the move.
For all moves on the SC140, the syntax requires that the source of the data be specified first followed by
the destination (SRC, DST). The source and destination are separated by a comma with no spaces either
before or after the comma.
Multi-register move instructions originate or update several registers. Registers that are accessed as part of
the same move instruction are specified with a colon separator. For example, a MOVE.4F from a memory
location pointed by R0 to the registers D0, D1, D2, and D3 is written as:
MOVE.4F (R0),D0:D1:D2:D3
In this case, let the address in R0 be noted as A0. The fractional word in location A0 then goes to D0, the
word in A0 + 2 goes to D1, the word in A0 + 4 goes to D2, and the word in A0 + 6 goes to D3. The
addresses increment by two since the addressing unit is always a byte. Moves to or from more than one
register are treated according to the same principle.
A special MOVE.L instruction supports moving data to and from data register extensions (Dn.e). In order
to support full saving and restoring of the machine state, extension moves also include the limit bit Ln of
the register, and are therefore nine bits wide. In one case of the MOVE.L instruction, two extensions
belonging to two consecutive data registers are moved concurrently from the registers to the memory as
part of a 32-bit access.
The extension bits of the even data register occupy bits 0 to 8 (bit 8 is the limit bit). The extension bits of
the odd register occupy bits 16 to 24 (bit 24 is the limit bit) as described in Figure 2-18.
0
39
32
MOVE.F (fractional move)
sign
extension
zero-fill
16
0
39
32
sign
extension
sign
extension
zero-fill
16
zero-fill
MOVE.2F (fractional double move)
0
39
32
sign
extension
sign
extension
sign
extension
sign
extension
zero-fill
16
zero-fill
MOVE.4F (fractional quad-move)
zero-fill
zero-fill