From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,3cfb384718eb4f7a X-Google-Attributes: gid103376,public From: "Nick Roberts" Subject: Re: question re Ada equivalent of C function Date: 1998/02/22 Message-ID: <01bd3f2d$0b86be20$LocalHost@xhv46.dial.pipex.com>#1/1 X-Deja-AN: 327393384 Content-Transfer-Encoding: 7bit References: <34EEFF9C.1D01FA5D@stellar1.com> <6cnj5d$bjq$1@usenet.rational.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Organization: UUNet UK server (post doesn't reflect views of UUNet UK) Newsgroups: comp.lang.ada Date: 1998-02-22T00:00:00+00:00 List-Id: Again, this kind of technique is specific to those architectures with memory-mapped ports, and even so, there could well be further ramifications (e.g. access rights, interference, etc.). It also assumes that an access value is the same as an address: this is not always so! For fooling around in memory, you're better off using the facilities provided by the standard packages System.Storage_Elements (RM 13.7.1) and System.Address_To_Access_Conversions (RM 13.7.2). (I always think it's slightly biblical, quoting chapter-and-verse like that ;-) == Nick Roberts ================================================ == Croydon, UK =========================== == ================ == Proprietor, ThoughtWing Software ========== == Independent Software Development Consultant ====== == Nick.Roberts@dial.pipex.com ==== == Voicemail & Fax +44 181-405 1124 === == == == I live not in myself, but I become == === Portion of that around me; and to me == ==== High mountains are a feeling, but the hum == ======= Of human cities torture. =========== -- Byron [Childe Harold] Corey Ashford wrote in article <6cnj5d$bjq$1@usenet.rational.com>... > > David Fisher wrote in message <34EEFF9C.1D01FA5D@stellar1.com>... > >Sorry if this is a bit basic, but learning Ada on one's own can be, er, > >challenging. > > > >What are the Ada equivalents of the C functions, inp and outp, used to > >read a byte from or send one to a memory address? > > > >Thanks! > > > >David Fisher > >Fisher Research Corporation > > > > There are a number of ways to do this in Ada. Here's one fairly simple one: > > with unchecked_conversion; > with system; > > type byte is mod 2*8; > type byte_access is access byte; > function to_byte_access is new unchecked_conversion(system.address, > byte_access); > > function inp(addr: system.address) return byte is > begin > return to_byte_access(addr).all; > end inp; > > procedure outp(addr: system.address; value: byte) is > begin > to_byte_access(addr).all := value; > end outp;