1
(*******************************************************************
5
* Arithmetic and Vectorial Computations (inline assembly)
6
* This version is used for Delphi 2
8
* Copyright 1996 David Turner, Robert Wilhelm and Werner Lemberg
10
* This file is part of the FreeType project, and may only be used
11
* modified and distributed under the terms of the FreeType project
12
* license, LICENSE.TXT. By continuing to use, modify or distribute
13
* this file you indicate that you have read the license and
14
* understand and accept it fully.
16
* NOTES : All vector operations were moved to the interpreter
18
******************************************************************)
20
(**********************************************************)
22
(* The following routines are inline assembly, they are *)
23
(* thus processor and bitness specific. Replace them *)
24
(* with your own if you want to port the TrueType Engine *)
26
(* NOTE : Delphi seems to use the eax, edx then ecx registers to pass *)
27
(* the first three parameters *)
29
(**********************************************************)
32
procedure Add64( var X, Y, Z : Int64 ); assembler;
47
(**********************************************************)
48
(* 64 Bit Substraction *)
50
procedure Sub64( var X, Y, Z : Int64 ); assembler;
65
(**********************************************************)
66
(* Multiply two Int32 to an Int64 *)
68
procedure MulTo64( X, Y : Int32; var Z : Int64 ); assembler;
75
(**********************************************************)
76
(* Divide an Int64 by an Int32 *)
78
function Div64by32( var X : Int64; Y : Int32 ) : Int32; assembler;
81
mov edx, [eax+4].dword
82
mov eax, [ eax ].dword
86
procedure DivMod64by32( var X : Int64; Y : Int32; var Q, R : Int32 );
91
mov edx, [eax+4].dword
92
mov eax, [ eax ].dword