gnupic: Re: [gnupic] Question about macros in gpasm
Subject:
Re: [gnupic] Question about macros in gpasm
From:
Craig Franklin ####@####.####
Date:
11 Feb 2005 04:58:25 +0000
Message-Id: <420C3BFE.6000802@users.sourceforge.net>
David Willmore wrote:
>Hello, all!
>
>I've finally been tempted to use macros in some code--
>lots of tedious repitition that I don't mind letting the
>preprocessor do. But, the final code is very hard to
>read and debug.
>
>I tried to solve things with careful use of EXPAND and
>NOEXPAND, and got partial results. NOEXPAND would make
>the listing of the macro expansion immediately terminate--
>including the NOEXPAND keyword. This is good. EXPAND,
>unfortunately, included itself when it restarted listing
>of macto expansion--not good. Who wants a file full of
>"EXPAND" statements.
>
>The second issue is that when expanded into the list file,
>values in macros don't appear as real values--the assembly
>is right next to them, so they were concrete values.
>
>Is there any way to have a macro like:
>
>clrvar macro base, len
> clrf base
> IF ((len-1) > 0)
> clrvar (base+1), (len-1)
> endm
>
>That when used will look in the listing like:
> 00007 CBLOCK 0x20
> 00010 ta:4 ; 32 bit temporary
> 00014 ENDC
>
> 00043 clrvar ta,4
>0011 01A6 M clrf ta
>0012 01A7 M clrf ta+1
>0013 01A8 M clrf ta+2
>0014 01A9 M clrf ta+3
>
>Or similar? Because the current:
> 00043 clrvar ta,4
> M EXPAND
>0011 01A6 M clrf base
> M EXPAND
>0012 01A7 M clrf base
> M EXPAND
>0013 01A8 M clrf base
> M EXPAND
>0014 01A9 M clrf base
>
>Isn't horribly useful. Is there a pretty way to do this
>other than symbolically dissassembling my code and using
>that?
>
>
>
Add a feature request on sourceforge. Someday I might get to it. I
doubt it will be anytime soon.
>Oh the CBLOCK was altered to remove other variables not important
>in this chunk of code, so don't worry that the address of 'f' in
>the clrf instructions doesn't point to 0x20.
>
>Thanks, everyone!
>
>Cheers,
>David
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: ####@####.####
>For additional commands, e-mail: ####@####.####
>
>
>
>