comp.lang.ada
 help / color / mirror / Atom feed
From: noc.near.net!inmet!spock!stt@uunet.uu.net  (Tucker Taft)
Subject: Re: FORTRAN bug(was Re: C++ vs. Ada -- Is Ada loosing?)
Date: 11 Dec 92 23:22:31 GMT	[thread overview]
Message-ID: <1992Dec11.232231.7032@inmet.camb.inmet.com> (raw)

In article <19921211.142820.329@almaden.ibm.com> 
  jnestoriak@vnet.ibm.com (John Nestoriak III) writes:

>In <1992Dec11.210404.2480@inmet.camb.inmet.com> Tucker Taft writes:

>>One of our goals for Ada 9X has been to give system programmers
>>back this feeling of satisfaction, so that you can do "code generation
>>in your head" for most Ada constructs.  In other words,
>>you can predict about how many machine instructions (and
>>generally which ones ;-) will be generated for each
>>construct in your program.  For a real-time embedded language,
>>this seems particulary important.
>
>Are there plans to add bitwise operations to Ada 9X?  Lack of
>built in shift operators was a disappointing discovery for me.
>I know that Ada is a high order language and therefor less suitable
>for manipulating bits than say C, but there are high level functions
>that need to manipulate bits.  I'm thinking in particular of
>compression routines.  The project I work on is Ada but we had to
>implement compression using C.

Yes.  We are planning to add "modular types" to Ada 9X,
which are unsigned, wrap-around types with a user-specified
modulus (normally a power-of-2).  These types will have +/-, etc., 
bit-wise and, or, xor, and not, as well as a language-defined
generic package that provides shift operations.  This
package is intended to be recognized by the compiler, so
that these shift operations result in inline machine instructions for
shifting.

Here is the tentative syntax:

   type Unsigned_16 is mod 2**16;  -- declare a 16-bit unsigned type

   package Shift_16 is new System.Shifts(Unsigned_16); use Shift_16;
                                   -- Get the shift functions
   X : Unsigned_16 := 16#00FF#;
   Y, Z : Unsigned_16;
begin
   Y := Left_Shift(X, 5);          -- Try them out
   Z := X and Y;
   if Z /= 16#00E0# then
       Put_Line("Send the 9X compiler back"); -- ;-)

etc...

S. Tucker Taft  stt@inmet.com
Ada 9X Mapping/Revision Team
Intermetrics, Inc.
Cambridge, MA  02138

             reply	other threads:[~1992-12-11 23:22 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-12-11 23:22 Tucker Taft [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-12-18 21:56 FORTRAN bug(was Re: C++ vs. Ada -- Is Ada loosing?) Michael Feldman
1992-12-18  9:22 agate!spool.mu.edu!uwm.edu!zaphod.mps.ohio-state.edu!caen!uvaarpa!vger.ns
1992-12-16 17:40 Pascal Obry
1992-12-16 16:02 fred j mccall 575-3539
1992-12-15 16:36 enterpoop.mit.edu!bloom-picayune.mit.edu!mintaka.lcs.mit.edu!ogicse!uwm.e
1992-12-15  2:57 Michael Feldman
1992-12-15  2:43 Michael Feldman
1992-12-14 22:15 John Bollenbacher
1992-12-14 18:33 J. Giles
1992-12-14 17:04 agate!spool.mu.edu!yale.edu!qt.cs.utexas.edu!cs.utexas.edu!csc.ti.com!til
1992-12-14 17:00 agate!spool.mu.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!cs.utexas.edu!csc.ti.com!tilde.csc.ti.com!mksol!mccall
1992-12-14 16:55 agate!spool.mu.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!cs.utexas.edu!csc.ti.com!tilde.csc.ti.com!mksol!mccall
1992-12-12 17:53 Michael Feldman
1992-12-12 14:34 Fergus Jam es HENDERSON
1992-12-12 14:20 Fergus Jam es HENDERSON
1992-12-12  6:04 Bob Kitzberger
1992-12-12  0:42 Pascal Obry
1992-12-11 22:24 John Nestoriak III
1992-12-11 21:31 Michael Feldman
1992-12-11 21:04 Tucker Taft
1992-12-11 15:38 Robb Nebbe
1992-12-11 13:29 agate!spool.mu.edu!uwm.edu!cs.utexas.edu!csc.ti.com!tilde.csc.ti.com!mkso
1992-12-09  6:02 Michael Feldman
1992-12-08 17:25 J. Giles
replies disabled

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