[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=bitpacked record
WB:boolean; {Or 0..1, depending on your preference.}
WB_Flush:boolean;
WB_Watermark:0..3;
Read_Ahead:boolean;
end;
Daniël
More information about the fpc-devel
mailing list