EasyManua.ls Logo

Texas Instruments TMS320C67X - Page 92

Texas Instruments TMS320C67X
465 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Addressing Modes
Instruction Set3-32 SPRU733
3.8.2.2 ADDA and SUBA Instructions
As with linear address arithmetic, offsetR/cst is shifted left by 3, 2, 1, or 0
according to the data size, and is then added to or subtracted from baseR to
produce the final address. Circular addressing modifies this slightly by only
allowing bits N through 0 of the result to be updated, leaving bits 31 through
N + 1 unchanged after address arithmetic. The resulting address is bounded
to 2
(N
+
1)
range, regardless of the size of the offsetR/cst.
The circular buffer size in AMR is not scaled; for example, a block size of 8 is
8 bytes, not 8 times the data size (byte, halfword, word). So, to perform circular
addressing on an array of 8 words, a size of 32 should be specified, or N = 4.
Example 35 shows an ADDAH performed with register A4 in circular mode
and BK0 = 4, so the buffer size is 32 bytes, 16 halfwords, or 8 words. The value
in AMR for this example is 0004 0001h.
Example 35. ADDAH Instruction in Circular Mode
ADDAH .D1 A4,A1,A4
Before ADDAH 1 cycle after ADDAH
A4
0000 0100h
A4 0000 0106h
A1 0000 0013h A1 0000 0013h
Note: 13h halfwords is 26h bytes. 26h bytes is 6 bytes beyond the 32-byte (20h) boundary 100h11Fh; thus, it is wrapped
around to (126h 20h = 106h).
3.8.3 Syntax for Load/Store Address Generation
The C64x DSP has a load/store architecture, which means that the only way
to access data in memory is with a load or store instruction. Table 310 shows
the syntax of an indirect address to a memory location. Sometimes a large off-
set is required for a load/store. In this case, you can use the B14 or B15 register
as the base register, and use a 15-bit constant (ucst15) as the offset.
Table 311 describes the addressing generator options. The memory address
is formed from a base address register (baseR) and an optional offset that is
either a register (offsetR) or a 5-bit unsigned constant (ucst5).

Related product manuals