comp.lang.ada
 help / color / mirror / Atom feed
* help - bit twiddling anomoly
@ 1996-05-10  0:00 Dave Wright
  1996-05-11  0:00 ` Theodore E. Dennison
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Dave Wright @ 1996-05-10  0:00 UTC (permalink / raw)



Any ideas why the following code behaves strangely (other than the 
fact that its SUN SPARCworks Ada 2.1.1 running on a SPARC5 with 
Solaris 2.4)?  The only difference between the working version and the
broken version is 8 bits of storage (string(1..2) versus character) in
the unused object wdw.

TIA,
Dave 

with unchecked_conversion;
with v_i_bits;
procedure testc is

type onebit is record
bit1: integer range 0..1;
end record;
for onebit'size use 1;
pragma bit_pack(onebit);

type fourteenbit is record
value: integer range 0..16383;
end record;
for fourteenbit'size use 14;
pragma bit_pack(fourteenbit);

type br is record
bit0:   onebit;
bit1:   onebit;
bit2_15: fourteenbit;
end record;
for br use
record at mod 1;
bit0   at 0 range 0..0;
bit1   at 0 range 1..1;
bit2_15 at 0 range 2..15;
end record;
for br'size use 16;
pragma bit_pack(br);

int:  integer;
brec: br;

-- with 2 bytes of data declared for wdw it works.
-- with 1 byte it doesn't.
wdw: string (1..2); -- with this declared it works :-)
--wdw: character; -- with this declared it doesn't work :-(
-- when it works brec.bit0 = 1
-- when it doesn't work brec.bit0  = 0.

function inttobit is new
unchecked_conversion (source=>integer, target=>onebit);
function intto14bit is new
unchecked_conversion (source=>integer, target=>fourteenbit);
begin

int := 1;
brec.bit0 := inttobit(v_i_bits.bit_sll(int,(integer'size-onebit'size)));

int := 1;
brec.bit1 := inttobit(v_i_bits.bit_sll(int,(integer'size-onebit'size)));

int := 16383;
brec.bit2_15 :=
intto14bit(v_i_bits.bit_sll(int,(integer'size-fourteenbit'size)));

end testc;

-- 
Wm. David Wright		wdwright@ccgate.hac.com
Systems Engineer		Hughes Technical Services Company




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~1996-05-13  0:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-05-10  0:00 help - bit twiddling anomoly Dave Wright
1996-05-11  0:00 ` Theodore E. Dennison
1996-05-11  0:00 ` Robert A Duff
1996-05-13  0:00 ` Marc Bouvette
1996-05-13  0:00 ` Kirk Davis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox