Re: Learning to use PICS

From: Sergio Masci (sergio_at_NO.SPAM.xcprod.com)
Date: 11/28/04


Date: Sun, 28 Nov 2004 03:06:06 -0000


john jardine <john@jjdesigns.fsnet.co.uk> wrote in message
news:coac45$hvg$1@newsg3.svr.pol.co.uk...
>
> "Sergio Masci" <sergio@NO.SPAM.xcprod.com> wrote in message
> news:41a89667$0$1067$db0fefd9@news.zen.co.uk...
>
> >[clip]
> >
> > The XCSB compiler will convert the following to just 6 machine code
> > instructions:
> >
> > proc inline set_bit(ubyte *addr, ubyte id)
> > *addr = *addr | (1 << id)
> > endproc
> >
> > proc inline clear_bit(ubyte *addr, ubyte id)
> > *addr = *addr & ~(1 << id)
> > endproc
> >
> > proc inline ubyte test_bit(ubyte *addr, ubyte id)
> > return (*addr & (1 << id) != 0)
> > endproc
> >
> > proc main()
> >
> > ubyte a, b
> >
> > if (test_bit(&a, 1) then
> > set_bit(&b, 2)
> > else
> > clear_bit(&b, 2)
> > endif
> > endproc
>
> Looks like "C" to me.
> I know this must be so, as I can't understand it :-).
> Yet I can easily read the 'Proton','CH-flash', 'iL_Bas16' etc Basics.
> regards
> john

It supports pointers like "C" but unlike many C compilers for the PIC it
doesn't generate a ton of code to build and pass the pointers and then
dereference them if it can determine the address at compile time. PEEK and
POKE would be more in keeping with other BASIC dialects but pointers allow
the programmer to give the compiler more information which in turn helps the
compiler trap silly errors and generate better code.

The reason I chose the above example is because it shows how the compiler
converts some very complex functionality into very tight code

Regards
Sergio Masci

http://www.xcprod.com/titan/XCSB - optimising PIC compiler
FREE for personal non-commercial use



Relevant Pages

  • Re: new IL: C (sort of...).
    ... only for "recent" Pascals, ... far pointers weren't really limited, ... in my compiler, I made wchar_t a builtin type (in most cases, aliased to ... I could very well include builtin "managed strings" in the new IL. ...
    (comp.lang.misc)
  • Re: new IL: C (sort of...).
    ... and the frontend compiler needs to be able ... Having very limited pointers is a fact of life in a VM language though, ... vague claims about Pascal's pointer support. ... That is pretty normal for standards (the ...
    (comp.lang.misc)
  • Re: code optimiation
    ... Given that the compiler can often optimise the generated code to use the best sized types available, it's seldom worth specifying "fast" types explicitly. ... pointers and floating point types whose "zero value" might not be all- ... instruction, so the assembler produced for *p++ when used as the ... It will do the same job, and let you write the source code using proper array constructs. ...
    (comp.arch.embedded)
  • Re: Seeting malloc pointer to NULL [2] -Totally confused!!!!!
    ... Best regards ... So now that I have gotten it to work in the VC++ compiler, ... mayby my compiler doesn't support pointers to pointers! ... from void* to other pointer types. ...
    (microsoft.public.vc.language)
  • Re: A taxonomy of types
    ... I am describing how to represent the representation (and, ... if the system follows static typing rules (such as in a compiler), ... so, the hardware sees pointers and pointer arithmetic, but the compiler ... "Besides the char types, up to three sizes of integer, declared short int, ...
    (comp.lang.misc)