https://www.freepascal.org/docs-html/rtl/system/inc.html
- says it operates on pointers
- also gives examples for unsigned types such as word

But can it be used to increment a QWORD?


      Inc(FAddress, (Opcode div FOwner.FLineInfo.LineRange) * FOwner.FLineInfo.MinimumInstructionLength);

FAddress: QWord = $FFFFFFFF02B60000

All values in the expression are of type Byte. Though the question to ask may be what the result is cast too....
I know the result of the expression is 0 (zero).
From the assembler I can see that I passed the div and the multiplication.

And then I got
0000000100CBEC93 48B8FFFFFFFFFFFFFF7F     mov rax,$7FFFFFFFFFFFFFFF
0000000100CBEC9D 4839C2                   cmp rdx,rax
0000000100CBECA0 7605                     jbe +$05    # $0000000100CBECA7 NEXTLINE+1815 fpdbgdwarfdataclasses.pas:4556 0000000100CBECA2 E8998535FF               call -$00CA7A67    # $0000000100017240 $fpc_rangeerror system.inc:801


which calls range check.

For all I can tell it checks the value of FAddress.
But why does it check it against High(Int64) ?

It is a QWord.


FPC 3.2.3 from Dec 2023
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to