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 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,6b3ebf057333800c X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news4.google.com!feeder3.cambrium.nl!feed.tweaknews.nl!newsfeed10.multikabel.net!multikabel.net!feed20.multikabel.net!newsfeed.freenet.de!bolzen.all.de!newsfeed.ision.net!newsfeed2.easynews.net!ision!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail Newsgroups: comp.lang.ada Subject: Re: Largest size array in Gnat 2005 for the PC? From: Georg Bauhaus In-Reply-To: <1193737660.539205.271270@57g2000hsv.googlegroups.com> References: <13idb3jbm28kfbe@corp.supernews.com><4726DD25.7080205@obry.net> <1193737660.539205.271270@57g2000hsv.googlegroups.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1193772402.13888.130.camel@kartoffel> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Date: Tue, 30 Oct 2007 20:26:42 +0100 Organization: Arcor NNTP-Posting-Date: 30 Oct 2007 20:26:07 CET NNTP-Posting-Host: ce2ce366.newsspool1.arcor-online.net X-Trace: DXC=;cQOm\BH3Yb6?Z On Tue, 2007-10-30 at 02:47 -0700, Ludovic Brenta wrote: > Pascal Obry wrote: > > ME a crit : > > > > > What is the largest array (in storage units) that you can declare in Gnat > > > 2005 for the PC? > In short, the answer is: "it depends" :) Indeed, it depends;-) I thought that declaring an array *type* of enormous size is not a problem, since there is no object yet. It isn't a problem. So maybe using portions of the array might work (when the program is not actually using physical memory.) I get unexpected results,though, but they are consistently produced by two unrelated compilers targeting two (seemingly unrelated) machines! This is the only hint I have found in the assembly listing; '?' is $63, '!' is $33, this is for the lines assigning Fst and Lst in the second declare block below. Notice the -1 for the stack offset movl $0, %eax movb $33, -1(%ebp,%eax) -- ( Fst := '!' ) movl $0, %eax movb $63, -1(%ebp,%eax) -- ( Lst := '?' ) Is there a bug in the following program or maybe I'm just dense? with Ada.Text_IO; procedure stk is use Ada; type Big_Index is range 0 .. 2**50; type A is array (Big_Index range <>) of Character; begin -- output is "!?" declare X: A (Big_Index range 2**40 .. 2**40 + 10_000); Fst: Character renames X(X'First); Lst: Character renames X(X'Last); begin Fst := '!'; Lst := '?'; Text_IO.Put(Fst); Text_IO.Put(Lst); Text_IO.New_Line; end; -- output is "??" declare X: A (Big_Index range 2**40 .. 2**48); Fst: Character renames X(X'First); Lst: Character renames X(X'Last); begin Fst := '!'; Lst := '?'; pragma assert(Fst = '!'); Text_IO.Put(Fst); Text_IO.Put(Lst); Text_IO.New_Line; end; end stk;