Интеграция в Delphi

Тема в разделе "WASM.BEGINNERS", создана пользователем Antiarchitector, 16 дек 2005.

  1. Antiarchitector

    Antiarchitector New Member

    Публикаций:
    0
    Регистрация:
    12 дек 2005
    Сообщения:
    2
    Адрес:
    г. Благовещенск
    Здравы будьте!

    Суть проблеммы в том, что мне приходится создавать программы по расчету достаточно больших чисел со множеством действий с ними (Задачи Кеплера и тому подобное). Требуется высокая точность вычислений. Пишу на Delphi 7, программы идут медленно. Точно знаю что поддержка кода Assemblera там есть. Может быть этот язык поможет.

    Как реализуется интеграция в высокоуровневые языки? Требуется: ввод даннных в подпрограмму с assembler'овским кодом и вывод из неё желательно целый кусок кода с комментариями. Советы приветствуются.
     
  2. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    Вот примерно как-то так это всё реализуется:
    Код (Text):
    1.  
    2. procedure TForm1.Button4Click(Sender: TObject);
    3. var
    4.  a, b: integer;
    5. begin
    6.  a := 100;
    7.  b := 50;
    8.  asm           //объявляем, что дальше писать будем на асме
    9.   mov  eax, a
    10.   mov  ebx, b
    11.   sub  eax, ebx
    12.   mov  a, eax
    13.  end;          //закончили писать на асме
    14. end;
    15.  
     
  3. Antiarchitector

    Antiarchitector New Member

    Публикаций:
    0
    Регистрация:
    12 дек 2005
    Сообщения:
    2
    Адрес:
    г. Благовещенск
    Благодарю. А вообще насколько он может ускорить программу и как в нем лучше с большими числами работать?
     
  4. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69


    Это смотря как писать. Может даже замедлить.

    Вот тут много инфы накопилось про выравнивания и оптимизацию под конкретный процессор...
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Antiarchitector

    > "А вообще насколько он может ускорить программу и как в нем лучше с большими числами работать?"

    А что значит "большие числа" ? Сколько бит, целые или вещественные ?

    Дельфи неплохо оптимизирует целочисленную 32-битную арифметику, поэтому просто переход на ассемблер тут обычно мало что дает - только алгоритмическая оптимизация может помочь. А вот с вещественными числами или 64-битными целыми можно получить заметный выигрыш, в частности за счет исключения ненужных пересылок данных в память, разворота циклов и т.п. В том же дельфи в модуле math есть достаточно примеров оптимизированных ассемблерных реализаций FPU-вычислений, работающих заметно быстрее чем обычные реализации со стандартными операторами паскаля