第三章 数据寻址 C54x提供七类寻址方式: l 立即数寻址 l 绝对地址寻址 l 累加器寻址 l 直接寻址 l 间接寻址 l 内存映象寄存器寻址 l 堆栈寻址 下面着重介绍以下几种方式。 1 绝对地址寻址 术语解释:dmad-数据存储地址;pmad-程序存储地址;PA-口地址;lk-长整数。 绝对地址寻址包括四类: l dmad寻址 l pmad寻址 l PA寻址 l *(lk)寻址 1.1 dmad寻址 dmad寻址用一标号标记数据空间地址,这类指令有: l MVDK Smem,dmad l MVDM dmad,MMR l MVKD dmad,Smem l MVMD MMR,dmad 如:MVKD SAMPLE,*AR5。此处SAMPLE即是dmad。 1.2 pmad寻址 pmad寻址用一标号标记程序空间地址,这类指令有: l FIRS Xmem,Ymem,pmad l MACD Smem,pmad,src l MACP Smem,pmad,src l MVDP Smem,pmad l MVPD pmad,Smem 如:MVPD TABLE,*AR7-。此处TABLE即为pmad。 1.3 PA寻址 PA寻址用一标号标记外部I/O口地址,这类指令有: l PORTR PA,Smem l PORTW Smem,PA 如:PORTR FIFO,*AR5。此处FIFO即为PA。 1.4 *(lk)寻址 *(lk)寻址也是用标号标记数据空间地址。 如:LD *(BUFFER),A。使用这类指令的好处在于不用修改DP和AR值。但有一点要注意的是,这类指令不能用于重复执行单指令中(RPT,RPTZ)。 2 直接寻址 在这类指令中,指令中的地址标号构成dmad的低7位(DP方式)或作为正向偏移量(SP方式)。所以指令中地址标号不得超过7位,采用DP或SP方式,由ST1中CPL位决定。CPL=0,采用DP方式;CPL=1,采用SP方式。 2.1 DP方式 DP方式,DP中内容作为dmad地址高9位,指令中地址标号作为低7位构成dmad地址。 2.2 SP方式 SP方式,以SP中内容作为dmad基地址,指令中地址标号作为正向偏移量,二者相加构成dmad地址。 3 间接寻址 间接寻址是指dmad由辅助寄存器AR0-AR7内容构成。使用间接寻址的灵活性不仅在于一条指令完成读或写数据存储区(单操作数),还在于一条指令可以完成两个不同存储区的读操作,或两个不同存储区的写操作,或对两个不同位置的一读一写操作。 3.1 对SARAM的访问 对SARAM访问使用寄存器AR0-AR7,其中AR0为变址寄存器。用法见下表: | | | | | | | | | | | | | | | | | 访问后,ARx中内容减去AR0中内容,并产生反向借位翻转(用于FFT算法) | | | | | | | | | 访问后,ARx中内容加上AR0中内容,并产生反向进位翻转(用于FFT算法) | | | | | dmad=ARx ARx=circ(ARx-AR0) | 访问后,ARx中内容按循环寻址方式减去AR0中内容 | | | | | dmad=ARx ARx=circ(ARx+AR0) | 访问后,ARx中内容按循环寻址方式加上AR0中内容 | | | ARx中内容加上16位长偏移(lk)为dmad,ARx不更新 | | | ARx中内容加上16位长偏移(lk)为dmad,ARx更新 | | dmad=circ(ARx+lk) ARx=circ(ARx+lk) | ARx中内容按循环寻址方式加上16位长偏移(lk)为dmad,ARx更新 | | | |
循环寻址操作如下: 寄存器BK作为循环缓存区大小(R)。循环缓存区基地址的低N位必须为0。R和N满足以下关系: 。末地址为基地址+R。步进值 。变址index由以下算法确定: 若 ; 若 ; 若 。 3.2 对DARAM的访问 对DARAM访问使用辅助寄存器AR2-AR5,用法见下表: | | | | | | | | | | | | | dmad=ARx ARx=circ(ARx+AR0) | 访问后,ARx中内容按循环寻址方式加上AR0中内容 |
|