Здравы будьте! Суть проблеммы в том, что мне приходится создавать программы по расчету достаточно больших чисел со множеством действий с ними (Задачи Кеплера и тому подобное). Требуется высокая точность вычислений. Пишу на Delphi 7, программы идут медленно. Точно знаю что поддержка кода Assemblera там есть. Может быть этот язык поможет. Как реализуется интеграция в высокоуровневые языки? Требуется: ввод даннных в подпрограмму с assembler'овским кодом и вывод из неё желательно целый кусок кода с комментариями. Советы приветствуются.
Вот примерно как-то так это всё реализуется: Код (Text): procedure TForm1.Button4Click(Sender: TObject); var a, b: integer; begin a := 100; b := 50; asm //объявляем, что дальше писать будем на асме mov eax, a mov ebx, b sub eax, ebx mov a, eax end; //закончили писать на асме end;
Благодарю. А вообще насколько он может ускорить программу и как в нем лучше с большими числами работать?
Это смотря как писать. Может даже замедлить. Вот тут много инфы накопилось про выравнивания и оптимизацию под конкретный процессор...
Antiarchitector > "А вообще насколько он может ускорить программу и как в нем лучше с большими числами работать?" А что значит "большие числа" ? Сколько бит, целые или вещественные ? Дельфи неплохо оптимизирует целочисленную 32-битную арифметику, поэтому просто переход на ассемблер тут обычно мало что дает - только алгоритмическая оптимизация может помочь. А вот с вещественными числами или 64-битными целыми можно получить заметный выигрыш, в частности за счет исключения ненужных пересылок данных в память, разворота циклов и т.п. В том же дельфи в модуле math есть достаточно примеров оптимизированных ассемблерных реализаций FPU-вычислений, работающих заметно быстрее чем обычные реализации со стандартными операторами паскаля