From: "ME" <abcdefg@nonodock.net>
Subject: Re: Largest size array in Gnat 2005 for the PC?
Date: Wed, 31 Oct 2007 21:13:40 -0700
Date: 2007-10-31T21:13:40-07:00 [thread overview]
Message-ID: <13iikk6j64186bd@corp.supernews.com> (raw)
In-Reply-To: okVVi.38106$kj1.30067@bgtnsc04-news.ops.worldnet.att.net
If GNAT placed "IMAGE_FILE_LARGE_ADDRESS_AWARE" in the process headers for
GNAT executables then you could use up to 3Gb of memory. Seems like a simple
thing to implement.
"anon" <anon@anon.org> wrote in message
news:okVVi.38106$kj1.30067@bgtnsc04-news.ops.worldnet.att.net...
> --
> -- With the following info from GNAT Users Guide, it seams that GNAT
> -- limits an arrays to default to 32-bit size on a 32-bit machine.
> -- Since you can not access more than 32-bits for an access type
> -- aka for arrays ( Array'ADDRESS + Array_index ) then your array is
> -- limited to:
> --
Thanks for answering my original question. Isn't there a "2^" somewhere in
your equation?
> -- 2GB >= ( 32-bits / Array_Element_Type'SIZE )
> --
> -- The documentation also states GNAT limits memory access to 2G
> -- for a 32-bit systems
> --
>
>
> -- From the "Compatibility and Porting Guide" aka Appendix E of
> -- the GNAT User Guide. GCC-GNAT-4.3.0
>
> -- QUOTE
>
> A common assumption in Ada 83 code is that an access type is
> in fact a pointer, and that therefore it will be the same size as a
> System.Address value. This assumption is true for GNAT in most cases
> with one exception. For the case of a pointer to an unconstrained
> array type (where the bounds may vary from one value of the access
> type to another), the default is to use a "fat pointer", which is
> represented as two separate pointers, one to the bounds, and one to
> the array. This representation has a number of advantages, including
> improved efficiency. However, it may cause some difficulties in
> porting existing Ada 83 code which makes the assumption that, for
> example, pointers fit in 32 bits on a machine with 32-bit addressing.
>
> To get around this problem, GNAT also permits the use of
> "thin pointers" for access types in this case (where the designated
> type is an unconstrained array type). These thin pointers are indeed
> the same size as a System.Address value.
>
> To specify a thin pointer, use a size clause for the type, for example:
>
> type X is access all String;
> for X'Size use Standard'Address_Size;
>
> which will cause the type X to be represented using a single pointer.
> When using this representation, the bounds are right behind the array.
> This representation is slightly less efficient, and does not allow quite
> such flexibility in the use of foreign pointers or in using the
> Unrestricted_Access attribute to create pointers to non-aliased objects.
> But for any standard portable use of the access type it will work in
> a functionally correct manner and allow porting of existing code.
> Note that another way of forcing a thin pointer representation
> is to use a component size clause for the element size in an array,
> or a record representation clause for an access field in a record.
>
> -- QUOTE
>
> -- Transitioning to 64-Bit GNAT for OpenVMS
>
> -- QUOTE
>
> Migration of 32 bit code, will focus on porting applications
> that do not require more than 2 GB of addressable memory. This
> code will be referred to as 32-bit code.
>
> -- QUOTE
>
> -- QUOTE
>
> By default, objects designated by access values are always
> allocated in the 32-bit address space. Thus legacy code will
> never contain any objects that are not addressable with 32-bit
> addresses, and the compiler will never raise exceptions as
> result of mixing 32-bit and 64-bit addresses.
>
> -- QUOTE
>
>
> In <13idb3jbm28kfbe@corp.supernews.com>, "ME" <abcdefg@nonodock.net>
> writes:
>>What is the largest array (in storage units) that you can declare in Gnat
>>2005 for the PC?
>>Does pragma Storage_ size affect this and if so where would you place it
>>in
>>a procedure?
>>
>>
>
next prev parent reply other threads:[~2007-11-01 4:13 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-30 4:00 Largest size array in Gnat 2005 for the PC? ME
2007-10-30 7:08 ` Martin Krischik
2007-10-30 12:27 ` Florian Weimer
2007-10-30 14:16 ` ME
2007-10-30 14:47 ` Pascal Obry
2007-10-30 18:58 ` Martin Krischik
2007-10-31 5:38 ` ME
2007-10-30 16:07 ` virtual memory, was " tmoran
2007-10-30 19:17 ` Martin Krischik
2007-10-30 20:35 ` Ludovic Brenta
2007-10-31 5:53 ` ME
2007-10-30 7:28 ` Pascal Obry
2007-10-30 9:47 ` Ludovic Brenta
2007-10-30 19:26 ` Georg Bauhaus
2007-10-30 20:17 ` Adam Beneschan
2007-10-30 22:53 ` tmoran
2007-10-30 23:39 ` Georg Bauhaus
2007-10-30 20:24 ` Adam Beneschan
2007-10-30 21:40 ` Georg Bauhaus
2007-10-30 21:48 ` Adam Beneschan
2007-10-30 21:50 ` Georg Bauhaus
2007-10-30 13:50 ` ME
2007-10-30 14:44 ` Pascal Obry
2007-10-30 15:00 ` Stefan Bellon
2007-10-30 15:16 ` Pascal Obry
2007-10-30 15:22 ` Stefan Bellon
2007-10-31 5:52 ` ME
2007-10-31 9:22 ` Stefan Bellon
2007-10-31 13:33 ` ME
2007-10-31 14:36 ` Stefan Bellon
2007-10-30 17:27 ` anon
2007-10-30 19:06 ` Adam Beneschan
2007-10-31 6:32 ` anon
2007-11-01 4:13 ` ME [this message]
2007-11-01 8:44 ` Stefan Bellon
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox