> movea.w (%a2)+,%a3 #a3=mem[a2.w]; a2=a2+2
>
> 1. Does A3 load 16 or 32 bits? I suspect all 32-bits are loaded from the sign-extended memory
> location pointed to by A2.
> 2. Does A2 increment by 2?
The lower 16 bit of the value, which is pointed by register A2, is sign extended to 32 bits and then is loaded to register A3. Then, register A2 is incremented by 2.
The original comment is correct.
> 3. What does the "%" represent? Is it assembler specific?
Prefix '%' is demanded by GNU assembler for registers.
> Is there overlap/redundency between instructions LEA & MOVEA? Are the following eqivalent?
>
> lea.l (%a2),%a3 #a3=mem[a2]
> movea.l (%a2),%a3 #a3=mem[a2]
Yes, above lines are equivalent.
See the below document for explicit explanation of ColdFire assembler. Notation of CodeWarrior is used in the document. The document can be downloaded from www.freescale.com
"
ColdFire® Family
Programmer’s Reference Manual
Document Number: CFPRM
Rev. 3
03/2005
"