[fpc-devel] Freepascal in microcontrollers
Vinzent Hoefler
JeLlyFish.software at gmx.net
Thu Feb 28 12:00:44 CET 2008
On Thursday 28 February 2008 11:28, Michael Schnell wrote:
> > AFAICS, it would be useful for bitpacked records only, so it could
> > appear anywhere where a {PACKRECORDS} directive or similar can
> > appear currently.
>
> IMHO it would only be useful (allowed with, regarded by) bitpacked
> record, as any other data representation is supposed to be optimized
> for speed according to the processor architecture.
Hmm, not necessarily. I frequently use enumeration types to express the
meaning of a set of hardware bits. So thinking about it, what if I'd
use enumerations in a bitpacked record? Maybe like this:
-- 8< --
type
// 2 bits.
Enable_Set = (Dont_Care := 0, // 00
Disable := 1, // 01
Enable := 3); // 11
type
Control =
bitpacked record
Continuous_Mode : Boolean; // bit 0/rightmost bit
Alternate_Compare : Boolean; // bit 1
...
Enable_Mode : Enable_Set; // bit 14 .. 15/leftmost bits
end;
-- 8< --
I don't know if FPC can pack enumerations into a bitpacked record at
all, but if it does, it might consider the bit order here, too.
Consider something like:
-- 8< --
var
My_Set : Enable_Set;
My_Record : Control;
My_Set := My_Record.Enable_Mode;
-- 8< --
How should the assignment be handled if the bit order for that bitpacked
record is changed?
Vinzent.
More information about the fpc-devel
mailing list