DSPRelated.com
Forums

DSP56300 assembler changes

Started by gusflit January 29, 2006
Hi to all!

I had to start recently a new project targetting the DSP56300 family,
and therefor downloaded the last revision available for Suite56.
The package came with the newest assembler version 6.3.22

It seems to me that there are now restrictions on parallel move that
didn't exist with previous versions of that assembler.
For example,
"mac x0,x1,a x:(r0)+,y0 y:(r1)+,y1" is now rejected.
Indeed the new assembler seems only to allow now one move per
instruction line.

Anyone noticed such a behaviour? Should i stick to this new version, or
get a previous one?

Thanks for your help!

Gustave


Gustave,

There are some restrictions regarding parallel move. You can not make parallel move using R0 and R1 at the same time.

You can try the following:
mac x0,x1,a x:(r0)+,y0 y:(r4)+,y1

Best regards,

Fabio Estevam

-----Original Message-----
From: motoroladsp@moto... [mailto:motoroladsp@moto...] On Behalf Of gusflit
Sent: domingo, 29 de janeiro de 2006 17:55
To: motoroladsp@moto...
Subject: [motoroladsp] DSP56300 assembler changes Hi to all!

I had to start recently a new project targetting the DSP56300 family,
and therefor downloaded the last revision available for Suite56. The package came with the newest assembler version 6.3.22

It seems to me that there are now restrictions on parallel move that
didn't exist with previous versions of that assembler.
For example,
"mac x0,x1,a x:(r0)+,y0 y:(r1)+,y1" is now rejected.
Indeed the new assembler seems only to allow now one move per
instruction line.

Anyone noticed such a behaviour? Should i stick to this new version, or
get a previous one?

Thanks for your help!

Gustave



Hello,

The Assembler 6.3.22 is fine, your code is indeed faulty:

> "mac x0,x1,a x:(r0)+,y0 y:(r1)+,y1" is now rejected.

For parallel moves, you must select a pair of address registers
of opposite banks, eg you must combine any of (r0/r1/r2/r3) with
any of (r4/r5/r6/r7).

In addition, your dual move source/destinations must match the
program space :

a/b/x0/x1 to/from x:memory
a/b/y0/y1 to/from y:memory

So rewrite your code that it looks similar to this:

mac x0,x1,a x:(r0)+,x0 y:(r4)+,y1

And the assembler will stop complaining.

Stefan


--- In motoroladsp@moto..., "gusflit" <gusflit@y...> wrote:
>
> It seems to me that there are now restrictions on parallel move that
> didn't exist with previous versions of that assembler.
> For example,
> "mac x0,x1,a x:(r0)+,y0 y:(r1)+,y1" is now rejected.
> Indeed the new assembler seems only to allow now one move per
> instruction line.

For an arithmetic operation with two parallel moves you need to use
the independent register banks. The registers are grouped as
(r0-r3/n0-n3/m0-m3/x0/x1) and (r4-r7/n4-n7/m4-m7/y0/y1) So, in your
example, you want to do something like this:

mac x0,y0,a x:(r0)+,x0 y:(r4)+,y0

this instruction will run as a single cycle so, for example, you can
do a "rep #n" for an "n" point FIR, etc.

seth