From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 10 Dec 91 08:23:36 GMT From: mcsun!uknet!stl!crosfield!pdg@uunet.uu.net (paul goffin) Subject: Re: 'SIZE attribute of a type Message-ID: <12159@suns3.crosfield.co.uk> List-Id: In article eachus@Dr_No.mitre.org (Robert I. Eachus) writes: >In article <5830@email.sp.unisys.com> parkhill@email.sp.unisys.com (parkhill) writes: > >> This is demonstrated when you do a Boolean'SIZE and get 8. It is >> possible for the compiler to use 1 bit but it instead uses 8. > > Not quite. AI-00536/08-BI-WA requires that Boolean'SIZE = 1. >Objects of type Boolean may have a size of 8 (or 32, or whatever), but >Boolean must have 'SIZE = 1 so that (packed) Boolean arrays are bit >vectors. Most vendors do fiercely pack bit vectors, but some still >get Boolean'SIZE wrong. (This is a very recent AI.) A quick test >program: > [deleted] A short while ago, I was writing an Ada source code preprocessor/database system. This was necessary because of the way we were implementing a multi-computer system which communicated with shared memory. I found that some of the assumptions I had made about the Boolean type used by Telesoft were wrong. (Of course, when I checked the manual, the correct description was there; I just didn't take it all in when designing my preprocessor.) Part of my preprocessor was concerned with sharing memory between systems programmed in Ada and systems programmed in FORTRAN. The FORTRAN compiler allowed a non-zero value to be true. Ada was far more strict : 16#0000# = False; 16#0001# = True. That caused a slight upset; but the really annoying thing was: An object of type Boolean occupied 16 bits. Arrays of type Boolean consisted of elements each 8 bits in size. Thus: Relay_1 : Boolean; Realy_2 : Array 1..2 of Boolean; -- These two Objects occupy the same ammount of memory -- (Not the same part of it, of course) (I had assumed - wrongly - that Boolean objects and elements of Boolean arrays would be the same size.) Packed Booleans occupied 1 bit, of course. As I said, the exact representation of Booleans was described in the manual; my mistake! Nevertheless, It did seem to me to be an odd representation. -- +-------------+-------------------------------------------------------+ + Paul Goffin + Crosfield Electronics Ltd. U.K. +44 442 230000x3357 + + + My opinions are my OWN. - no one would pay for this + +-------------+-------------------------------------------------------+