I think you need to add POP CNTR also.
Farhad V.
Subj: Re: [adsp] Illegal multifunction instruction & a DO-UNTIL query in
ADSP
2181
Date: Thu, 5 Apr 2001 8:12:07 AM Eastern Daylight Time
From: Russell Shaw <>
To: Ian <>
CC:
Ian wrote:
>
> Q1 - My assembler is telling me that the following instruction is an
illegal> multifunction
> but I can't see anything wrong, and the
processor manual implies that it
> should be possible
>
> MR = MR + MX0 * MX0 (SS), MX0 = DM(I0, M1);
>
> Any comments ?
Can't do MX0*MX0, because that's two Xops. Need something like
MX0*MY0.
>
> Q2 - I have a loop construct of the following form
>
> CNTR = 15;
> DO loop UNTIL CE;
> xxxxxx;
> IF NOT CE JUMP DecCntr;
> JUMP Quit2;
>
> DecCntr: xxxxxx;
> xxxxxx;
loop: nop;
>
> Quit1: {a normal loop exit}
> RTS;
>
> Quit2: {alternative loop exit}
POP PC, POP LOOP;
> RTS;
>
> Where xxxx indicate irrelevant code in this example.
>
> The question is what POPs (if any) should occur at the Quit2 point ?
> The processor manual is a bit vague on what gets POPed by IF NOT CE when
it
> does not jump.
> I have assumed that the Quit2 line should execute
a POP PC, POP LOOP;
> instruction which seems to work ok.
I think thats right.
|