The example shows that the arithmetic shift results in an error.
Code: Select all
x=-1
x>>4
Debug x
Debug RSet(Hex(x, #PB_Long), 8, "0")
Code: Select all
EnableASM
x=-1
mov eax, x
shr eax, 4
mov x, eax
Debug x
Debug RSet(Hex(x, #PB_Long), 8, "0")
Code: Select all
x=-1
x>>4
Debug x
Debug RSet(Hex(x, #PB_Long), 8, "0")
Code: Select all
EnableASM
x=-1
mov eax, x
shr eax, 4
mov x, eax
Debug x
Debug RSet(Hex(x, #PB_Long), 8, "0")
Code: Select all
x.l=$80000000
Debug RSet(Bin(x, #PB_Long), 32, "0")
x>>16
Debug RSet(Bin(x, #PB_Long), 32, "0")
x.l=$80000000
Debug RSet(Bin(x, #PB_Long), 32, "0")
!v_x = (unsigned long)v_x >> 16;
Debug RSet(Bin(x, #PB_Long), 32, "0")