[fpc-pascal] Int64 multiplication error
Bogdan
bogdan.vuk at siol.net
Wed Feb 22 08:45:07 CET 2012
Hello
I have a problem with int64 multiplication:
program tstint64;
{$MODE objfpc} {$H+}
uses SysUtils;
var
i: integer;
y: int64;
begin
y := 1;
for i := 1 to 10 do
begin
writeln (i, ' y=', IntToHex(y,16));
y := y * 10;
end;
end.
The program is compiled with crosscompiler on Windows7 for ARM
Xscale-IXP43X (Linux 2.6, big endian)
After downloading to device UC-8410, I get:
root at MoxaPcvHeTest:/var/sda/tmp# ./tstint64
1 y=0000000000000001
2 y=0000000A00000000
3 y=0000000000000064
4 y=000003E800000000
5 y=0000000000002710
6 y=000186A000000000
7 y=00000000000F4240
8 y=0098968000000000
9 y=0000000005F5E100
10 y=3B9ACA0000000000
HI and LO dwords are swaped in every second line.
The crosscompiler for Windows host is made from FPC 2.6.0
/tags/release_2_6_0 revision 20381 with:
c:\FPC\2.6.0\bin\i386-win32\make.exe all CPU_TARGET=armeb
OS_TARGET=linux BINUTILSPREFIX=armeb-linux- FPC=ppc386.exe
OPT="-dFPC_ARMEB" CROSSOPT="-dFPC_ARMEB -Cb -CfSOFT -Cparmv4"
With previous version of crosscompiler I was using (FPC 2.4.2), there
was no such error. Previous version of crosscompiler was compiled with
CROSSOPT -CparmV5,
but with FPC.2.6.0 I get a lot of "Warning: Arm BLX instruction targets
Arm function".
I think something is wrong with crosscompiler.
Bogdan
More information about the fpc-pascal
mailing list