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.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: a07f3367d7,8b6340ddbfdcd2d X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII Path: g2news2.google.com!postnews.google.com!z17g2000vbd.googlegroups.com!not-for-mail From: sjw Newsgroups: comp.lang.ada Subject: Re: Code Statement Date: Tue, 18 May 2010 08:05:41 -0700 (PDT) Organization: http://groups.google.com Message-ID: <8242a424-5b09-4444-a3ed-7b45e159c46a@z17g2000vbd.googlegroups.com> References: NNTP-Posting-Host: 20.133.0.13 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1274195142 9347 127.0.0.1 (18 May 2010 15:05:42 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 18 May 2010 15:05:42 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: z17g2000vbd.googlegroups.com; posting-host=20.133.0.13; posting-account=_RXWmAoAAADQS3ojtLFDmTNJCT0N2R4U User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3,gzip(gfe) Xref: g2news2.google.com comp.lang.ada:11736 Date: 2010-05-18T08:05:41-07:00 List-Id: On May 18, 2:12=A0pm, johnj...@cox.net wrote: > Trying to use the "Code Statement" for a special project, by passing the > ASM proc/func. So, can Gnat process a true "Code Statement" statement? > > When I compile the following example using>gnat make temp.adb -gnatpg > > gcc -c -gnatpg temp.adb > temp.adb:10:07: incorrect type for code statement > gnatmake: "temp.adb" compilation error > > Source code: > > =A0 =A0package Machine_Code is > > =A0 =A0 =A0 =A0type Asm_Insn is new Integer; =A0-- =A0type required by ga= nt > > =A0 =A0 =A0 =A0x86_NOP =A0 =A0: constant Asm_Insn :=3D 16#90#; > > =A0 =A0 =A0 =A0type M_Code_0 =A0is record > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Opcode : Asm_Insn; > =A0 =A0 =A0 =A0end record; > =A0 =A0 =A0 =A0pragma Pack (M_Code_0); > =A0 =A0end Machine_Code; > > Source code: > > =A0 =A0with Machine_Code; > > =A0 =A0procedure temp is > > =A0 =A0 =A0 =A0procedure Test; > > =A0 =A0 =A0 =A0procedure Test is > =A0 =A0 =A0 =A0 =A0 use Machine_Code; > =A0 =A0 =A0 =A0begin > =A0 =A0 =A0 =A0 =A0 M_Code_0'(Opcode =3D> x86_NOP); =A0-- line 10 > =A0 =A0 =A0 =A0end Test; > > =A0 =A0begin > =A0 =A0 =A0 null; > =A0 =A0end temp; See http://booch95.svn.sourceforge.net/viewvc/booch95/trunk/src/bc-support-high= _resolution_time-clock.adb-pentium?revision=3D1415&view=3Dmarkup for a working i586/x86_64 example. Best not to use -gnatpg: -gnatp says 'suppress all checks', -gnatg says 'GNAT implementation mode (used for compiling GNAT units)' -- I'm pretty sure that that mode is like -Werror.