Daniël Mantione schrieb:


Op Fri, 9 May 2008, schreef Florian Klaempfl:

Vincent Snijders schrieb:
Florian Klaempfl schreef:
Miklos Cserzo schrieb:

Hi Folks,

according the documentation "Arrays are limited to 2 GBytes in size in the default processor mode." Is there another mode allowing bigger arrays?

64 Bit mode/compiler.


Except for darwin.

Except it doesn't work:
http://www.freepascal.org/testsuite/cgi-bin/testsuite.cgi?action=3&run1id=21737&testfileid=2417


This is operation system dependent also if you can declare static data structures of this size. Things like

type
 ta = array[0..$fffffffff] of byte;
var
 p : ^ta;

begin
 new(p);
end.

should work e.g. on linux.

Yes, this would work, but wrapping it in a record and adding a field to it might not work. The reason is that the x86_64 still uses singed 32-bit displacements in its operands.

This is only important for static data which requires relocation. For heap/stack the compiler simply generates the constants.

To support this, a different code generation is needed, which we don't have.

Many compilers have an mcmodel switch. FPC's x86_64 code generation compares to mcmodel=small.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to