comp.lang.ada
 help / color / mirror / Atom feed
From: Dave Wright <wdwright@ccgate.hac.com>
Subject: help - bit twiddling anomoly
Date: 1996/05/10
Date: 1996-05-10T00:00:00+00:00	[thread overview]
Message-ID: <3193C6C3.7FEC@ccgate.hac.com> (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




             reply	other threads:[~1996-05-10  0:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-05-10  0:00 Dave Wright [this message]
1996-05-11  0:00 ` help - bit twiddling anomoly Robert A Duff
1996-05-11  0:00 ` Theodore E. Dennison
1996-05-13  0:00 ` Marc Bouvette
1996-05-13  0:00 ` Kirk Davis
replies disabled

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