comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Does Ada support endiannes?
Date: Mon, 12 Dec 2011 14:22:39 +0100
Date: 2011-12-12T14:22:39+01:00	[thread overview]
Message-ID: <53n2sd7edt5i.1boh4452h0aks.dlg@40tude.net> (raw)
In-Reply-To: 20e631fc-e7b4-41ca-be0f-aab8be3f9a25@f33g2000yqh.googlegroups.com

On Mon, 12 Dec 2011 04:46:22 -0800 (PST), Gerd wrote:

> On 12 Dez., 12:27, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
> 
> Any suggestion on how to convert, others than using "/" and "mod"?

Why not to use them? It would be a bad idea trying to avoid them.

It won't give you much performance, because memory mapping would require
unpacking, alignment, checksum evaluation, stuff which would turn into
extra copying. So why not just:

   type Octet is new Unsigned_8;
   type Word is new Unsigned_16;
   type Octet_Array is array (Positive range <>) of Octet;

   procedure Get_Little_Endian (Data : Octet_Array; Index : in out Integer;
      Value : out Word) is -- No extra copying
   begin
      Value := Word (Data (Index)) + Word (Data (Index + 1)) * 256;
      Index := Index + 2;
   end Get_Little_Endian;

Arithmetic is cheap. Memory access is expensive.

Note also, that a real-life protocol could also have specially encoded
values reserved for indication of status (overflow, underflow etc). So
memory mapping would not work anyway.

P.S. We are developing hard real-time communication applications handling
various quite weird hardware protocols. Believe or not, we are using no
representation clauses at all.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2011-12-12 13:22 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-12  8:57 Does Ada support endiannes? Gerd
2011-12-12  9:23 ` Niklas Holsti
2011-12-12 11:27 ` Dmitry A. Kazakov
2011-12-12 12:44   ` Gerd
2011-12-12 19:23     ` Jeffrey Carter
2011-12-13 14:25       ` Gerd
2011-12-13 14:19     ` Gautier write-only
2011-12-14 16:16       ` Gerd
2011-12-14 18:16         ` Dmitry A. Kazakov
2011-12-14 20:16         ` Gautier write-only
2011-12-15 11:27           ` Gerd
2011-12-15 13:01             ` Simon Wright
2011-12-15 13:37             ` Dmitry A. Kazakov
2011-12-15 20:12             ` Jeffrey Carter
2011-12-12 12:46   ` Gerd
2011-12-12 13:22     ` Dmitry A. Kazakov [this message]
2011-12-12 17:07       ` Charles H. Sampson
2011-12-12 18:33         ` Dmitry A. Kazakov
2011-12-14  5:19           ` Charles H. Sampson
2011-12-14  8:56             ` Dmitry A. Kazakov
2011-12-14  9:46               ` Simon Wright
2011-12-15  9:14               ` Charles H. Sampson
2011-12-15  9:46                 ` Dmitry A. Kazakov
2011-12-25 21:42                   ` Charles H. Sampson
2011-12-26 10:47                     ` Dmitry A. Kazakov
2011-12-27 10:38                       ` Georg Bauhaus
2011-12-27 12:35                         ` Dmitry A. Kazakov
2012-01-04  4:33                       ` Charles H. Sampson
2012-01-04 11:56                         ` Dmitry A. Kazakov
2011-12-12 13:33     ` Robert A Duff
replies disabled

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