function __ftol( f : double) : Integer;
begin
Result := Trunc(f);
end;
Обновление: извините, я ошибаюсь. Двойник сохраняется в FPU при входе в эту функцию.
Двойник затем помещается в локальную переменную f и усекается до целого числа.
Так что забудь мой ответ.
Эта подпрограмма не используется в GraphicEx, поэтому попробуйте закомментировать ее.
Обновление 2.
Как говорит Дэвид, его можно использовать по ссылкам в файлах .obj.
Предполагая, что это 64-битные объектные файлы, выполняющие одинаковую передачу параметров (удваивается в стеке FPU),
вот функция, которую можно использовать (в 64-битном режиме):
function __ftol : Integer;
// Assumes double value is in FPU stack on entry
// Make a truncation to integer and put it into function result
var
TmpVal: Int64;
SaveCW, ScratchCW: word;
asm
.NOFRAME
fnstcw word ptr [SaveCW]
fnstcw word ptr [ScratchCW]
or word ptr [ScratchCW], 0F00h ;// trunc toward zero, full precision
fldcw word ptr [ScratchCW]
fistp qword ptr [TmpVal]
fldcw word ptr [SaveCW]
mov rax, TmpVal
end;