1.2.53. $MMX : Поддержка MMX (только Intel 80x86)

Вверх  Предыдущий  Следующий

Free Pascal поддерживает оптимизацию для процессора MMX Intel (см. также раздел 5.1. О чем это?).

Это оптимизирует некоторые части кода для процессора MMX Intel, что существенно повышает скорость. Повышение быстродействия наблюдается в основном при перемещении больших объёмов данных. Вот всё, что изменяется при использовании этой директивы:

Данные, размер которых кратен 8 байтам, перемещаются с помощью инструкции ассемблера movq, которая перемещает 8 байт за один раз

ПРИМЕЧАНИЕ

Поддержка MMX НЕ эмулируется на системах без MMX, то есть если процессор не имеет расширения MMX, то оптимизация MMX не может использоваться.

Если поддержка MMX включена, она не позволяет выполнять арифметические операции с плавающей точкой. Она позволяет перемещать данные с плавающей точкой, но не арифметические операции. Если операции с плавающей точкой всё равно должны быть выполнены, то поддержка MMX сначала должна быть отключена и регистры FPU должны быть очищены с помощью функции emms модуля cpu.

Следующий пример поможет вам представить это более ясно:

Program MMXDemo;
uses mmx;
var
  d1 : double;
  a : array[0..10000] of double;
  i : longint;
begin
  d1:=1.0;
{$mmx+}
{ данные с плавающей точкой используются, но нет арифметики }
  for i:=0 to 10000 do a[i]:=d2; { это 64-разрядное перемещение }
{$mmx-}
  emms; { очистить fpu }
{ сейчас мы можем выполнять арифметические операции с плавающей точкой }

end.

См. также раздел по MMX (5. ПОДДЕРЖКА INTEL MMX), чтобы получить более подробную информацию по этой теме.