Re: Largest size array in Gnat 2005 for the PC?
- From: Georg Bauhaus <rm.tsoh+bauhaus@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 30 Oct 2007 20:26:42 +0100
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;
.
- Follow-Ups:
- Re: Largest size array in Gnat 2005 for the PC?
- From: Adam Beneschan
- Re: Largest size array in Gnat 2005 for the PC?
- From: Adam Beneschan
- Re: Largest size array in Gnat 2005 for the PC?
- References:
- Largest size array in Gnat 2005 for the PC?
- From: ME
- Re: Largest size array in Gnat 2005 for the PC?
- From: Pascal Obry
- Re: Largest size array in Gnat 2005 for the PC?
- From: Ludovic Brenta
- Largest size array in Gnat 2005 for the PC?
- Prev by Date: Re: virtual memory, was Re: Largest size array in Gnat 2005 for the PC?
- Next by Date: Write 4NT / Take Command plugins with Ada
- Previous by thread: Re: Largest size array in Gnat 2005 for the PC?
- Next by thread: Re: Largest size array in Gnat 2005 for the PC?
- Index(es):
Relevant Pages
|