Topic : Problems with 64-bit integers in Ride7

Forum : Ride IDE

Original Post
Post Information Post
December 18, 2009 - 12:13pm
Guest

My software needs to use 64-bit integers and it causes problems when these are passed to functions. When I use 32-bit integers (unsigned int) everything works well. When i change them to uint64_t type two problems arise:

1. The debugger always shows only lower 32 bits of 64 integers. For example the folllowing code should set "temp64" variable to 0x1122334455667788 value but the debugger shows 0x55667788:

uint64 temp64;

temp64 = 0x1122334455667788LL;

2. When "Addr" variable of uint64_t type is passed to the function "ReadBlock" the "Addr" variable always equals to 0x20004DCC at the entry of the function instead of 0x00000000:

u8 ReadBlock(u8 *buf, uint64_t Addr)
{
....
....
}

if (ReadBlock(Buf, 0))
{
....
....
}

When "Addr" is uint32_t type, the function works ok:

u8 ReadBlock(u8 *buf, uint32_t Addr)
{
....
....
}

if (ReadBlock(Buf, 0))
{
....
....
}

Is it possible there is an error in the compiler or do i do something wrong ?

Replies
Post Information Post
+1
0
-1
December 21, 2009 - 4:18pm
Guest

Hi

Can you let us know which software you use.

Regards
Matloub

+1
0
-1
December 21, 2009 - 7:31pm
Guest

Oooops, I've just solved the problem no. 2. It was my mistake... I declared external function incorrectly:

extern u8 ReadBlock(u8 *buf, uint32_t Addr)

instead of:

extern u8 ReadBlock(u8 *buf, u64 Addr)

I'm sorry for the inconvenience.

However, the problem no. 1 persists (incorrect displaying of 64 bit integers)
I use Ride7 version 7.24.09.0251 and RKit 1.22.09.0254.