1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
{ %skiptarget=android }
{ %cpu=i386 }
{ %OPT=-Cg- }
{ %version=1.1 }
{ Source provided for Free Pascal Bug Report 2668 }
{ Submitted by "Marco" on 2003-09-06 }
{ e-mail: marco+bugs@freepascal.org }
{$ifdef fpc}{$MODE DELPHI} {$ASMMODE INTEL} {$endif}
type
TFloatingPointClass =
(
fpZero, // zero
fpNormal, // normal finite <> 0
fpDenormal, // denormalized finite
fpInfinite, // infinite
fpNaN, // not a number
fpInvalid // unsupported floating point format
);
const
FPClasses: array [0..5] of TFloatingPointClass =
(
fpInvalid,
fpNaN,
fpNormal,
fpInfinite,
fpZero,
fpDenormal
);
asm
MOV ECX,0
MOV EDX,0
MOVZX EAX, TFloatingPointClass(FPClasses[EDX])
MOVZX EAX, TFloatingPointClass([ECX].FPClasses[EDX])
LEA ECX,FPClasses
MOVZX EAX, TFloatingPointClass([ECX].1+2[EDX])
end.
|