comp.lang.ada
 help / color / mirror / Atom feed
* Endian-problem/bug with system.bit_ops (gnat3.15)...
@ 2008-03-15  7:58 Erik Baigar
  2008-03-15 12:22 ` Niklas Holsti
  0 siblings, 1 reply; 5+ messages in thread
From: Erik Baigar @ 2008-03-15  7:58 UTC (permalink / raw)



Dear Ada users,

in porting an application from Meridian's Ada83 to gnat3.15 I
encountered
some issues with the system.bit_ops. They (especially the Bit_And which 
I used) show behaviour which depends on the processor used:

The code contains expressions of the form
 
  Bit_And ( MEMORY (OPERAND_ADDRESS)'Address,18, ACCUMULATOR'Address,18,
            ACCUMULATOR'Address);

which are used in the simulation of a vintage processor. I used length
18 here since the processor has 18-bit registers. This code works well
on the Intel (little endian) platform but fails on SPARC (big endian).
It required some investigation to locate the problem, but replacing 
the length 18 by 32 (all are integers here), i.e. using

  Bit_And ( MEMORY (OPERAND_ADDRESS)'Address,32, ACCUMULATOR'Address,32,
            ACCUMULATOR'Address);

solved the problem and the code now runs on little and big endian 
systems. I know, system.bit_ops are version dependent and non portable,
but I'd not expect behaviour depending on the target system at the 
first glance... 

   Regards,

      Erik.



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

end of thread, other threads:[~2008-03-15 19:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-15  7:58 Endian-problem/bug with system.bit_ops (gnat3.15) Erik Baigar
2008-03-15 12:22 ` Niklas Holsti
2008-03-15 18:53   ` Erik Baigar
2008-03-15 19:26     ` Niklas Holsti
2008-03-15 19:45       ` Erik Baigar

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