gnupic: [PATCH] Bad warning for BRA on 16F code


Previous by date: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, mengjin su
Next by date: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, Borut Ražem
Previous in thread: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, mengjin su
Next in thread: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, Borut Ražem

Subject: Re: [PATCH] Bad warning for BRA on 16F code
From: Tamas Rudnai ####@####.####
Date: 22 Jul 2013 18:05:39 -0000
Message-Id: <CAJLb5+T3jJsZBXNcmhkADSB9YoBqeG2BXTS=6iQgAX-FnoLS6g@mail.gmail.com>

Not really, mid-range PICs have 14-bit word sizes and they use word
addressing, not byte addressing. In the other hand 18F (otherwise known as
high-performance) has 16bit program memory storage and can be addressed at
byte level, therefore the 16bit word alignment is required (but as far as I
know you cannot even load uneven addresses using BRA or GOTO, as with BRA
the address is encoded in a '2n' way so it is sifted left, and in GOTO the
bit 0 is ignored from the given address).

16f1518 is an enhanced-mid-range, it has 14bit size words, addresses
program memory by words, not bytes, and does not require alignments.

Tamas


On 22 July 2013 09:54, mengjin su ####@####.#### wrote:

> In Hex output, PIC always uses byte address.
> In assembly language, those trivial things happen all the time.
>
>
> > From: ####@####.####
> > To: ####@####.####
> > Subject: [PATCH] Bad warning for BRA on 16F code
> > Date: Sun, 21 Jul 2013 22:05:03 -0600
> >
> > I have found a warning that I believe is wrong. I am assembling for
> 16f1508 and I am
> > getting a warning for a branch to a label with an odd address. Here is
> the test code:
> >
> > > cat bad.asm
> >         LIST    P=PIC16F1518
> >         include p16f1518.inc
> >
> >         org     0x000
> >
> >         bra     main
> > ;       nop
> > main:   goto    main
> >
> >         end
> >
> > > gpasm -c bad.asm ; gplink -o bad.hex bad.o
> > message: using default linker script
> > "/usr/home/install/gputils/share/gputils/lkr/16f1518_g.lkr"
> > warning: destination address must be word aligned at 0 of section
> ".org_0"
> >
> > If I add a nop instruction to make the destination even, there is no
> warning.
> >
> > I understand that pic18 uses byte addressing, where 12f and 16f use word
> addresses, so
> > pic18 destinations should always be even. With that in mind, I made this
> patch:
> >
> > %diff -u libgputils/gpcofflink.c.orig libgputils/gpcofflink.c
> > --- libgputils/gpcofflink.c.orig        2013-07-10 22:00:41.000000000
> -0600
> > +++ libgputils/gpcofflink.c     2013-07-21 21:42:21.000000000 -0600
> > @@ -1415,6 +1415,7 @@
> >      break;
> >
> >    case RELOCT_BRA:
> > +    if (class != &proc_class_pic14e)
> >      if (value & 1) {
> >        gp_warning("destination address must be word aligned at %#x of
> section \"%s\"",
> >                   org, section->name);
> >
> > I don't know if this patch is the right way to fix the error, but I hope
> it is useful.
> >
> > Thanks!
> > -Richard
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: ####@####.####
> > For additional commands, e-mail: ####@####.####
> >
>
>



-- 
int main() { char *a,*s,*q; printf(s="int main() { char *a,*s,*q;
printf(s=%s%s%s, q=%s%s%s%s,s,q,q,a=%s%s%s%s,q,q,q,a,a,q); }",
q="\"",s,q,q,a="\\",q,q,q,a,a,q); }

Previous by date: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, mengjin su
Next by date: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, Borut Ražem
Previous in thread: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, mengjin su
Next in thread: 22 Jul 2013 18:05:39 -0000 Re: [PATCH] Bad warning for BRA on 16F code, Borut Ražem


Powered by ezmlm-browse 0.20.