the result of ASH(1L, 70) is 1.0*2^70, which is larger than MAX(LONGINT),
an overflow exception occurred when converting a floating point number to an integer;
please note:
1,the BB compiler use FPU to compute ASH(longint,shift), the result is float in ST(0) ;
it had to convert to integer when the final result need to be longint: FISTP [sp]
when the ST(0) is larger than max integer, the overflow exception occured!
2, not same as c language,the "shift>64" is valid for the ASH(l, shift),the result can be larger than MAX(LONGINT),
about your example:
1), x:=ASH(1L,70); // exception raised
=> real := longint
for the result type of ash() is LONGINT, the ST(0) has to convert to longint(FISTP), overflow exception occured;
after fixup, promote the type of ash() to float;avoid FISTP;
=> real := real(longint)
2), x := 1.0 * ASH(1L, 70); // no exception;
=> real := real * real(longint)
the ash() type promote to float, no FISTP needed;
you can compare the dasm code:
Code: Select all
StdCoder.Decode ..,, ..26,...3QwdONl9RhOO9vRbf9b8R7fJHPNGomCrlAyIhgs,CbKBhZ
xi2,CoruKu4qouqm8rtuGfa4.hOO9vRb1Y66wb8RTfQ9vQRtIdvPZHWKqtCa.E.U5UFC06.5Qw
dONlnayKmKKqCLLCJuGqayKm6F9vQ5nsH3.bnayKmKa2,Cor.kay4.qorGqmQCU2,CJuyKtQC9
8P9PP7ONbXmb.2.QvDk5kdzU.2U.2.ot1U00.bnUGLu8ro8quGrmCLWKqt.2.o36.I16.M.EJY
jyC.6.VQ.E.UegiJYe6r.3Qwd0ZORNPNZvQRtIdHdKLq6F9vQ59.XDJ.QiiIepZhZ7F6.Zz.6.
,UlW5UXW.2.52.CLLC3b8Rn9P99F9vQ0ks,Uikwm46.ZD06..W.e32.86.c918R..,E0E...7,
,M.6.,.,iLF1,Eyuv.2bXFQC41,0.y34E,9T3U.ENU.kG0.0UZhN6.9jjRBuvxfHza9QurRYmL
T5U.E.07c5c.3gwJ.,6.Y32.I16.K46.J7..0E6,p.U1IkmL,2U.EQE.EBU.YJ2.I3VuI3.0E6
,P.4E.E.UegCUmT,2U.k1l1km0.0U1KyB.,.60sG6.,U0KyD.,..010k.U.U.10UwVsUsUdU12
U.Tia6kvt90ooS2AX,E,a.0kGE,y.Qf,E08Mtf.2.S02.e,2UgW.Ue2UwV.6.,6YUVU3IkmL,6
.A80E.0.p.0EKF.EJ.6.th.kHE044w9IULU.QX0k,q.A.6.EJK5.E..S.K42.526..F.L0,6.I
EU...V7.2U,.,.,42.t1l,l,H,5EU,.c41U0IV.2.C0,c.T.,ci1.j.aF,sz3MHT8Ff8H986Te
MlvIdfQHfPDvQrN1PM0HOHVuHZ8J,7HTvNpNDb8R79HTvNrN1HM1H6IZuH5OF7OJZOF,7FT98H
tCPM0H66hOEZ86PfCHeHdOFDOFZuC,dQpdI9OENuCPM03OFDOGRO1HM0P96pND,tBVtC,N1HM0
Z96pND,NEb8G,78X7HN76PP8rN1HEtUloZk2Ye2Y,Re6,.KIbGoRqk4qkWuIW0mb8Kw.oZBgVB
IgZpgjJiZ3YaBhshik3YBIUDJgsR8.7uPHM0HsC,tPBfNbPNdPDXN0NPNRvNd9OvNAXtAPcB1O
CZ7AVtBXdC,76fNB,N0VOJb8GHMF38IHM1hNEn,8HR0GEWHV0mWCIEakayIfakW8IcmGEKod0p
2qEP.GHR0GEWnN0mVGHEOIO0m24IWGo2Kod0JK0mK4HNqk2qEP42sBp76,dBl76bNF,7Ab76V7
A,7AV76H6If0ltAVN0PcB.5eC,767OC,dA586Z7B,N0B8H7uEjO0juHZ8F,tK9uIVOLHM1h,cF
p76,NBn76H6IT8IHMF58KHM1PcB10WHMeHE0mVSHEGnO0GXCIEGHP0GM0HE01M0PuHQf3JcEhZ
ogfg2Yr2a7Qbh3Yug5jVBAVBo4UrIbU22386dNB,,HcFH8H7O0rOF30akR0GtenS4odWII4Hag
hdQ5hNEU,JbU2Y2B5VNB,dBV76V7AaHNoa,3Y7ocAN0bOGRuFNOF,tKhNEndAoakgf7g,Ut2au
2YUY6OIW0m2OodCoUmoWak2qEP.8HR0GEGIW0GW4HEaEXCJeakdGJI4nIak4O1EOeHE0WtkVEd
uIWaIbGp2ak4O1EPeHE0Ws2Y2B4QcDhd7QeI3ZkAZg2YHZecA4.6Cp76,FX0mW0HEaEXuodGpd
Sp24Igak4O1kUeHE0W2lQAV4R8VO0b8J41.Qcu2YUAb33Y7Qe,3d4BV7gVq.Ycu2YUwaq2Ykoa
UAV8Jc3BVq2YPpa,,1OBvO0P.MCBeC,76WXmgaUoak22.UJJc7Qe7p7.EPg9qEP.1GR0GEW1cF
l76HMEUEVsgVqAct.ldC,FWOYnQcUIaoU7ReI3e7AeLxdGlhkicB.3eC,76ndE,N0BuJ1OGdO0
HM1.CIR0W2FNCIE.m2XuJ...BeC,FQ.V7C,N010UsAVBg,U0J4Yc2NB786B8BsIdWPh6Aamgf7
g,.fdC,76n,.PM0P.EPU0,U7VP,dVvIiUIbxMA..00.MCp76,7FnFMUU..m2a2.EPg9.8IXeHE
00OIWU1,.QclIbUEWYclUHZe76J..bdC,76a150Z0..fdC,76WX2,5uHUk...SHR00BmWUC,..
ndC,76G2nl2Q8VmdMA.EVeHE0mQK2..Qcu22jVk...78BvO0P.sE9eC,76WXm.,,.MJ..EPg9.
GYu2YUUkYcUoak22.A,POJNO0bOG..h,.GoUeHE6FK1UHZ8i3A4.EWeHEAb0,.P.kWeHE2b0NF
f76HMHTW3ReElW8Icak4O1MFVdC,lOGY72eDlW8Y7.kMkVCHEaEdKIeak2gVBAgaZiZJiUogd3
DeXBIUDJA.u0UjpAb1.EM0n4OnU4HM0HMSnMkOK1VOJMF.X,81W1C2U079Q8.6B6Cb,OIOMEUE
lK4X7gVBo4UrUq.016AAVEh825.kVEWaXm.ocAtE.i3q3.O2KnQ00T050.WHM665uBEX6BEE01
M0P0r0GXg.rtCP96pVrsCqEP422br.30k2OoY.U7QbUIC.gBak4OnU.107OC0122Aak2YqAcUE
aA,H0Ul24OHMq3.n7ApFEG2B8FsI50.ENEWGY2B4QeIB,d0.6BkQsEcI.o4Uq.lFWU1x7EM...
l,O2Eb..U,,7WtM0CZEtIA4.sEMC9WHV7.U2VrEM..U,haR,kQO225Z,00.ke..UqML.A6p,7m
OcFkdG3r04XR,UsUtI6O2UB.MCp76,FV.kY.6BQbm,X,.EEk4MAkVEWaXk.,,.Y7A7.UqML.Ic
m.oc2,50.EOeHEYc27FX,b8JHEe..O1A5C283..WHR0GE2570C2EM...10O2Eb..U1,7WtM0CZ
EtIA4.MFMC90..O2S1..U1xaRBVBo4UlU235Z,00.ke..UqML.QcrI5EMG2.U7MH..Uq..58FE
Wg4.b8JQ9MA.EW0HR0GEaHV.UB.MAp76,7C3WpkakWC3KIVM1h,sAMB7m20pbMF3m2.6BsEbVG
,8ssHpmsETfPdfQT9PNPNZvQRtIGqVGLtmKWKqtCK.4D..umVyKrG5EWE.Q6AA.cQ...sQR,.G
20EtV.UIU.U76.0E..k.8c9.,UVF.SU.MK6.,k,,0.E2kTE.0.326..EGE.4E.E.EECOhU.YD.
l,1.0.3I3U...p6.6.M.EJYD2.0E65.2..pZ,...
--- end of encoding ---
luowy