comp.lang.ada
 help / color / mirror / Atom feed
From: "Corey Ashford" <x@y.com>
Subject: Re: RISC
Date: Wed, 28 Mar 2001 19:52:31 -0500
Date: 2001-03-28T19:52:31-05:00	[thread overview]
Message-ID: <E166E69A95753648BC398E36BE9A3AB80D559A11@sus-ma1it06.rational.com> (raw)
In-Reply-To: dwtw6.3343$MD6.241100@news6-win.server.ntlworld.com

Why not use signed integer types?  You'd get overflow detection
for free, via a Constraint_Error exception.  For example:

type X is new Integer range -128 .. 127;
for X'size use 8;


"chris.danx" <chris.danx@ntlworld.com> wrote in message news:dwtw6.3343$MD6.241100@news6-win.server.ntlworld.com...
> mod types have made some parts of the machine simple but are making
> arithmetic operations a nightmare.
>
> I need to support 2s compliment integers (floats will not feature at all)
> hence mod types.  Taking not of X and add 1, then it's negative.  no probs!
> Problem is with sign and overflow on add, sub, mul, div.
>
> Each one must cope with signed nums and unsigned ones -- signal a carry or
> overflow.  I think you can just do add/sub and no worries.  Problems arise
> when i detect overflow, i tried thinking this out, and Martin Dowie pointed
> out a possible solution that might work but only for unsigned nums.  I don't
> know how to go about this signed ones.
>
> I really need to know how to detect overflow for multiplication and
> division.  I also need a way to detect it for add and sub.  Maybe Ada has an
> attribute for this or something,
>
>     e.g. ...
>             type X is mod 256;
>             ...
>             a :    x := 128;
>             a := x + x;
>             ...
>             if a'overflow then
>                 ...
>             end if;
>
> {i doubt it though!}
>
> Can anyone help,
>
>
> Thanks,
> Chris Campbell
>
> "Martin Dowie" <martin.dowie@gecm.com> wrote in message
> news:3ab5d2a4$1@pull.gecm.com...
> > I had a similar problem recently when I had to mimic unsigned 64 bits with
> > only
> > unsigned 32 bits available.
> >
> > For addition and subtract it is fairly easy. e.g.
> >
> > a = 255, b = 1
> > c = a + b
> > if c < a then overflow as it has wrapped
> >
> > similarly for subtraction with > instead of <.
> >
> > I only required +/- support, so I'm afraid I have no solutions for * or /
> > :-(
> >
> > The long-hand way for multiplications would be to add e.g.
> > a = 90, b = 3
> > c = 0
> > for I in 1 .. b loop
> >   c = c + a
> >   if c < a then overflow as it has wrapped
> > end loop
> >
> > not very efficient...
> >
> > Sorry, no ideas spring to mind for division...
> >
> > chris.danx <chris.danx@ntlworld.com> wrote in message
> > news:qrws6.3335$bL.360000@news6-win.server.ntlworld.com...
> > > Two quickies! I hope!
> > >
> > >[snip]
> > >
> > > I'm using mod types to simulate registers in the RISC machine.  I'm
> about
> > to
> > > implement arithmetic operations but i've thought of a problem.  How do i
> > > detect overflow?
> > >
> > > e.g.
> > >     say it was 1 byte reg
> > >
> > >     25*158 is too big.
> > >
> > >     12+254 is too big also.
> >
> >
> >
>





  reply	other threads:[~2001-03-29  0:52 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-14 20:23 RISC chris.danx
2001-03-14 21:57 ` RISC Tucker Taft
2001-03-14 22:36   ` RISC chris.danx
2001-03-14 23:03     ` RISC Fraser Wilson
2001-03-15  1:30       ` RISC Corey Ashford
2001-03-15  9:19       ` RISC chris.danx
2001-03-15 12:37 ` RISC chris.danx
2001-03-15 13:03   ` RISC Tarjei T. Jensen
2001-03-15 18:29     ` RISC Robert A Duff
2001-03-15 14:40   ` RISC Ted Dennison
2001-03-15 14:49     ` RISC Robert A Duff
2001-03-15 17:37       ` RISC Marin David Condic
2001-03-15 18:28         ` RISC Robert A Duff
2001-03-15 19:16           ` RISC Marin David Condic
2001-03-16  8:44             ` RISC Martin Dowie
2001-03-16 14:40               ` RISC Marin David Condic
2001-03-20 10:17                 ` RISC Martin Dowie
2001-03-20 14:34                   ` RISC Marin David Condic
2001-03-20 15:45                     ` RISC Ted Dennison
2001-03-20 16:39                       ` RISC Robert A Duff
2001-03-20 18:10                       ` RISC Martin Dowie
2001-03-20 18:56                         ` RISC Ted Dennison
2001-03-22  9:16                       ` RISC - largish (code listed) Martin Dowie
2001-03-22  9:34                         ` Martin Dowie
2001-03-20 18:09                     ` RISC Martin Dowie
2001-03-20 20:00                       ` RISC Marin David Condic
2001-03-20 22:30                         ` RISC Robert A Duff
2001-03-20 22:48                           ` RISC Ted Dennison
2001-03-20 23:10                           ` RISC Marin David Condic
2001-03-21  0:18                             ` RISC Robert A Duff
2001-03-21 14:31                               ` RISC Marin David Condic
2001-03-21 16:47                                 ` RISC Ted Dennison
2001-03-21 17:36                                   ` RISC Marin David Condic
2001-03-16 15:09             ` RISC Tucker Taft
2001-03-16 17:10               ` RISC Robert A Duff
2001-03-16 19:02                 ` RISC Marin David Condic
2001-03-16 20:58                   ` RISC Robert A Duff
2001-03-19 16:17                     ` RISC Marin David Condic
2001-03-19 16:45                       ` RISC Florian Weimer
2001-03-19 17:14                         ` RISC Marin David Condic
2001-03-19 17:33                           ` RISC Florian Weimer
2001-03-21  5:57                           ` RISC Lao Xiao Hai
2001-03-16 22:19                   ` RISC Ted Dennison
2001-03-16 19:13                 ` RISC Laurent Guerby
2001-03-16 20:30                   ` RISC Robert A Duff
2001-03-16 20:51                 ` RISC Ole-Hjalmar Kristensen
2001-03-16 18:33               ` RISC Marin David Condic
2001-03-16 20:45                 ` RISC Robert A Duff
2001-03-17  1:13                   ` RISC Randy Brukardt
2001-03-19 16:34                   ` RISC Marin David Condic
2001-03-19 17:49                     ` RISC Robert A Duff
2001-03-16 20:08 ` RISC chris.danx
2001-03-16 20:31   ` RISC Marin David Condic
2001-03-17 21:51     ` RISC Robert A Duff
2001-03-18  6:37       ` RISC Charles Hixson
2001-03-19 15:42         ` RISC Robert A Duff
2001-03-19 17:02         ` RISC Marin David Condic
2001-03-19 17:45           ` RISC Robert A Duff
2001-03-19 18:48             ` RISC Marin David Condic
2001-03-19 16:45       ` RISC Marin David Condic
2001-03-16 22:27 ` RISC chris.danx
2001-03-17  2:49   ` RISC Jeffrey Carter
2001-03-19  9:43   ` RISC Martin Dowie
2001-03-19 11:06     ` RISC chris.danx
2001-03-28 22:24     ` RISC chris.danx
2001-03-29  0:52       ` Corey Ashford [this message]
2001-03-29 12:42       ` RISC John English
2001-03-22 20:11 ` RISC chris.danx
2001-03-22 20:51   ` RISC Marin David Condic
2001-03-22 21:02   ` RISC tmoran
2001-03-22 21:18     ` RISC chris.danx
2001-03-22 21:45   ` RISC Britt Snodgrass
2001-03-22 22:43     ` RISC chris.danx
2001-03-28 11:37   ` RISC chris.danx
  -- strict thread matches above, loose matches on Subject: below --
2001-03-16 23:25 RISC Beard, Frank
2001-03-17 11:39 ` RISC chris.danx
2001-03-29  3:12 RISC Beard, Frank
2001-03-29  7:28 ` RISC Martin Dowie
2001-03-29 12:38 ` RISC chris.danx
2001-03-29 19:07 ` RISC Chad R. Meiners
2001-03-29 17:52 RISC Beard, Frank
2001-03-30 17:31 RISC Kent Paul Dolan
replies disabled

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