Использование регистров MMX

Тема в разделе "WASM.ASSEMBLER", создана пользователем Freeze, 5 дек 2011.

  1. Freeze

    Freeze New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2011
    Сообщения:
    1
    Для демонстрации скорости работы регистров MMX нужно написать 2 программы, точнее создать dll ( 1-я на Си, 2-я на ассемблере ), реализующие одинаковую логику и выводящие время своей работы. ( В моем случае сравнить используя логическое или(||) два массива.

    на Си я написал , вот примерный текст программы( массивы А и Б я буду создавать через Random , с n-ым количеством элементов) :

    Код (Text):
    1. #include <stdio.h>
    2.  
    3. int main()
    4. { int i,n;
    5.  
    6.   int a[5]={0,0,0,2,3};
    7.   int b[5]={0,7,6,4,9};
    8.   int *c = new int[i];
    9.  
    10.   for(i=0;i<5;i++)
    11.   { if (a[i]!=0 || b[i]!=0)
    12.       {c[i]=1;} else c[i]=0;
    13.  
    14.       printf("%d",c[i]);
    15.   }
    16. getchar();
    17. }
    Нужен аналог на языке Ассамблера ( к сожалению я с ним не знаком ),если можно dll, помогите пожалуйста !
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Freeze
    Такие простые циклы нормальный компилятор оптимизирует так, что надо еще постараться на ассемблере улучшить. Вы батенька лет на 5-10 опоздали с такими простыми экспериментами.
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    valterg
    Cудя по формулировкам это явно учебное задание и его смысл в том чтобы постараться не столько ради выигрыша по времени сколько для того чтобы разобраться в самих принципах низкоуровневой оптимизиции, и если бы ТС задавал вопросы по существу то ему бы тут помогли, только он вместо этого халявы ищет.

    Freeze
    printf в отдельный цикл вынеси - он у тебя 99% времени сьест и на его фоне ты никакой низкоуровневой оптимизации в принципе увидеть не сможешь.
    В поиске по форуму набери ключевое слово rdtsc, а в поле автора leo - получишь очень ценный набор сведений на тему измерения производительности и оптимизации.
     
  4. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Тут и сишный код с ошибками, какого размера будет с?
    Регистр MMX 64-битный, можно по 2 int за раз обрабатывать.
    Так что нечётное количество элементов массива для MMX тоже неудачный выбор.