[fpc-devel] Freepascal in microcontrollers

Daniël Mantione daniel.mantione at freepascal.org
Wed Feb 27 12:21:38 CET 2008



Op Wed, 27 Feb 2008, schreef Vinzent Hoefler:

> Well, TP didn't, and until now I found no real documentation on it (it
> sure wasn't mentioned in *my* copy of the programmer's manual).

That is correct, but the last version of TP appeared in 1992. Many Pascal =

compilers have supported bitpacking, since 2.2 we do too.

> If it's
> similar to C-records then it's unusable anyway, as there are no
> guarantees. Not about endianess, not about padding.

This is simply a matter of documenting and standardizing. I.e. we can =

exchange packed records with TP/Delphi, what would be the problem with =

bitpacking? If I recall well, Jonas made our bitpacking compatible with =

GCC and GNU-Pascal.

> And what about volatile and/or atomic semantics?

Pascal does not have volatile. It is not strictly needed either since the =

use of mem or absolute should provide sufficient information to the =

compiler it cannot optimize away reads/writes.

> Well, too many question at once. I boil it down to this one: How else do
> you write it? The original layout declaration:
>
> |  for SDRAM_Buffer_Control use
> |   record
> |      WB           at 0 range 0 .. 0;
> |      WB_Flush     at 0 range 1 .. 1;
> |      WB_Watermark at 0 range 2 .. 3;
> |      Read_Ahead   at 0 range 4 .. 4;
> |      --  bits [5:7] are reserved
> |   end record;

type  TSDRAM_Buffer_Control=3Dbitpacked record
         WB:boolean; {Or 0..1, depending on your preference.}
         WB_Flush:boolean;
         WB_Watermark:0..3;
         Read_Ahead:boolean;
       end;

Dani=EBl


More information about the fpc-devel mailing list