beautypg.com

Renesas SH7641 User Manual

Page 107

background image

Section 2 CPU

Rev. 4.00 Sep. 14, 2005 Page 57 of 982

REJ09B0023-0400

DSP Addressing Operations: DSP addressing operations in the pipeline execution stage (EX),
including modulo addressing, are shown below.

if ( Operation is MOVX.W MOVY.W ) {

ABx=Ax; ABy=Ay;

/

* memory access cycle uses ABx and ABy. The addresses to be used have not been updated */

/

* Ax is one of R4,5 */

if ( DMX==0 || DMX==1 && DMY == 1 )} Ax=Ax+(+2 or R8[Ix] or +0);

/

* Inc,Index,Not-Update */

else if (! not-update) Ax=modulo( Ax, (+2 or R8[Ix]) );

/

* Ay is one of R6,7 */

if ( DMY==0 ) Ay=Ay+(+2 or R9[Iy] or +0); /

* Inc,Index,Not-Update */

else if (! not-update) Ay=modulo( Ay, (+2 or R9[Iy]) );

}

else if ( Operation is MOVS.W or MOVS.L ) {

if ( Addressing is Nop, Inc, Add-index-reg ) {

MAB=As;

/

* memory access cycle uses MAB. The address to be used has not been updated */

/

* As is one of R2 to R5 */

As=As+(+2 or +4 or R8[Is] or +0); /

* Inc,Index,Not-Update */

else { /

* Decrement, Pre-update */

/

* As is one of R2 to R5 */

As=As+(-2 or -4);

MAB=As;

/

* memory access cycle uses MAB. The address to be used has been updated */

}

/

* The value to be added to the address register depends on addressing operations.

For example, (+2 or R8[Ix] or +0) means that

+2 : if operation is increment

R8[Ix] : if operation is add-index-reg

+0 : if operation is not-update

*/

function modulo ( AddrReg, Index ) {

if ( AdrReg[15:0]==ME ) AdrReg[15:0]==MS;

else AdrReg=AdrReg+Index;

return AddrReg;

}

This manual is related to the following products: