Ассемблерная вставка в Си

Тема в разделе "WASM.BEGINNERS", создана пользователем Juvelire, 26 дек 2007.

  1. Juvelire

    Juvelire New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2007
    Сообщения:
    2
    Есть проблема с ассемблерной вставкой в Си-код.

    Представим, что у нас забита таблица table (тип double), в которой посчитаны некоторые константы:

    Код (Text):
    1. void Init()
    2. {
    3.     double x;
    4.     for (int i = 0; i < N; i++) {
    5.         for (int j = 0; j < N; j++) {
    6.             x = (double)(2 * PI * i * j / N);
    7.             table[N*i+j] = sin(x) + cos(x);
    8.         }
    9.     }
    10. }
    И есть функция расчета некоторого алгоритма на Си.

    Код (Text):
    1. void Func()
    2. {
    3.     double def = 0;
    4.     for (int i = 0; i < N; i++) {
    5.         for (int j = 0; j < N; j++) def += input[j] * table[N*i+j];
    6.         output[i] = def;
    7.         def = 0;
    8.     }
    9. }
    Требуется создать функцию с АСМ-вставкой, которая повторяет функцию на Си (Func) с возможностью параллельной работы.
    /*
    Мне представляется это как захват по 4 элемента из table и применение к ним:
    def += input[j] * table[N*i+j];
    output = def;
    */

    Обязательно использовать XMM или MMX (но он не работает с плавающей точкой, поэтому нужно будет представить дроби в виде целочисленных значений).
    Заранее определены:

    Код (Text):
    1. const int N = 256.
    2. double input[N], output[N], table[N*N];
    Буду крайне признателен за помощь!
     
  2. Cock

    Cock New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    148
    Аскемблерные вставки в с у\бира если, это mscv и тебе надо 64 битная версия, делай в отдельном asm файле
     
  3. Juvelire

    Juvelire New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2007
    Сообщения:
    2
    Надо именно вставкой(
     
  4. Cock

    Cock New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    148
    Тогда другой компиллер выбирай