[fpc-devel] integer, cardinal
jonas at zeus.ugent.be
Sat Apr 16 21:33:06 CEST 2005
On 16 Apr 2005, at 17:04, Yury B. wrote:
> Why integer is 16-bit in default (FPC) mode?
> It's ok to define it as 16-bit in BP-compatibility mode, but in FPC
> it should be like in delphi - natural to the platform, i.e. 32-bit
> for 32-bit x86... or does 64-bit platform also uses 32-bit integers
> as default, so that longint would be good?
It would break a lot of existing code if we did that. You can perfectly
define integer to be whatever you want yourself. That's also how it's
done in Delphi and objfpc mode: the objpas unit is then automatically
included, and this unit simply includes the following declaration:
integer = longint;
PS: on most processors, using 16 bit numbers is going to be faster than
using 32 bit numbers, since they occupy less memory and thus leave more
room in the cache for other stuff. Afaik, the x86 family is the only
one which is handicapped when performing 16 bit calculations in 32 bit
mode (and even there, some processors do not have an explicit penalty,
although your code grows slightly because of the prefixes to the
instructions -- but then again, this is compensated when the
instruction includes a constant).
More information about the fpc-devel