Для демонстрации скорости работы регистров MMX нужно написать 2 программы, точнее создать dll ( 1-я на Си, 2-я на ассемблере ), реализующие одинаковую логику и выводящие время своей работы. ( В моем случае сравнить используя логическое или(||) два массива. на Си я написал , вот примерный текст программы( массивы А и Б я буду создавать через Random , с n-ым количеством элементов) : Код (Text): #include <stdio.h> int main() { int i,n; int a[5]={0,0,0,2,3}; int b[5]={0,7,6,4,9}; int *c = new int[i]; for(i=0;i<5;i++) { if (a[i]!=0 || b[i]!=0) {c[i]=1;} else c[i]=0; printf("%d",c[i]); } getchar(); } Нужен аналог на языке Ассамблера ( к сожалению я с ним не знаком ),если можно dll, помогите пожалуйста !
Freeze Такие простые циклы нормальный компилятор оптимизирует так, что надо еще постараться на ассемблере улучшить. Вы батенька лет на 5-10 опоздали с такими простыми экспериментами.
valterg Cудя по формулировкам это явно учебное задание и его смысл в том чтобы постараться не столько ради выигрыша по времени сколько для того чтобы разобраться в самих принципах низкоуровневой оптимизиции, и если бы ТС задавал вопросы по существу то ему бы тут помогли, только он вместо этого халявы ищет. Freeze printf в отдельный цикл вынеси - он у тебя 99% времени сьест и на его фоне ты никакой низкоуровневой оптимизации в принципе увидеть не сможешь. В поиске по форуму набери ключевое слово rdtsc, а в поле автора leo - получишь очень ценный набор сведений на тему измерения производительности и оптимизации.
Тут и сишный код с ошибками, какого размера будет с? Регистр MMX 64-битный, можно по 2 int за раз обрабатывать. Так что нечётное количество элементов массива для MMX тоже неудачный выбор.