Форум программистов, компьютерный форум CyberForum.ru

Профилирование, C++ и вставки ASM, прошу совета - C++

Восстановить пароль Регистрация
 
S_Gretski
Сообщений: n/a
09.05.2013, 08:41     Профилирование, C++ и вставки ASM, прошу совета #1
есть собственно программа, вот часть кода где я и колдую

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    int radix=10;
    int n = 1;
    double X=0.0, summ=0.0, a,b,c,d,e;
    #define n 100000
    //int k(1);
    
for (int k = 1; k <= n; k++ )
{
    a = 9.0 *(k * k);
 
b = a - 1.0;
/*  _asm{
        finit
        fild n
        fld a
        fsub 
        fst b
        }*/
    
    c = k * b;
    d = 1.0 / c;
    summ += d;
}
 
QueryPerformanceCounter(&liPerfC1);
 
QueryPerformanceCounter(&liPerfC2);
 
liCount.QuadPart=liPerfC2.QuadPart-liPerfC1.QuadPart;
Count=_ui64toa(liCount.QuadPart, szCounter, radix);
sprintf(szBuffer,"a=%e, Count = %s",a, Count); 
    m_List.AddString(szBuffer); 
 
 
QueryPerformanceCounter(&liPerfC3);
 
liCount.QuadPart=liPerfC3.QuadPart-liPerfC2.QuadPart;
Count=_ui64toa(liCount.QuadPart, szCounter, radix);
sprintf(szBuffer,"b=%e, Count = %s",b, Count); 
    m_List.AddString(szBuffer); 
 
QueryPerformanceCounter(&liPerfC4);
 
liCount.QuadPart=liPerfC4.QuadPart-liPerfC3.QuadPart;
Count=_ui64toa(liCount.QuadPart, szCounter, radix);
sprintf(szBuffer,"c=%e, Count = %s",c, Count); 
    m_List.AddString(szBuffer); 
 
QueryPerformanceCounter(&liPerfC5);
 
liCount.QuadPart=liPerfC5.QuadPart-liPerfC4.QuadPart;
Count=_ui64toa(liCount.QuadPart, szCounter, radix);
sprintf(szBuffer,"d=%e, Count = %s",d, Count); 
    m_List.AddString(szBuffer);
 
QueryPerformanceCounter(&liPerfC6);
 
liCount.QuadPart=liPerfC6.QuadPart-liPerfC6.QuadPart;
Count=_ui64toa(liCount.QuadPart, szCounter, radix);
sprintf(szBuffer,"summ=%.10f, Count = %s",summ, Count); 
    m_List.AddString(szBuffer); 
}
Вот результат выполнения программы:

[IMG]http://s020.***********/i718/1305/a1/09c25d8dfaab.jpg[/IMG]

программа производит вычисления и показывает сколько было потрачено машинного времени на вычисление.
например на получение результата переменной b было потрачено 1157 единиц машинного времени.

задача состоит в том, что бы уменьшит время вычисления с помощью ассемблерных вставок, тут у меня и возникли проблемы.

С ассемблеров я не дружу, но стараюсь, читал форумы (в частности и ваш), искал информацию, но так сказать все равно не понимаю "физику процесса"

Вот я пробую переписать эту простую операцию на ASM
C++
1
2
3
4
5
6
7
8
//b = a - 1.0;
    _asm{
        finit
        fild n
        fld a
        fsub 
        fst b
        }
при отладке программы появляется ошибка:
error C2415: недопустимый тип операнда, (Появляется указатель на против команды fild n)

Подскажите пожалуйста, что я делаю не так и посоветуйте литературу где хорошо описано FPU и есть наглядные примеры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2013, 08:41     Профилирование, C++ и вставки ASM, прошу совета
Посмотрите здесь:

C++ c++ и ASM
Asm + C++ C++
Совсем нуб просит совета C++
C++ Работа с файлами, новичек ищет совета.
C++ C++ И ASM
C++ Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании
C++ Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис
Профилирование и альтернативная компиляция проектов Visual Studio C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
263 / 185 / 10
Регистрация: 15.01.2011
Сообщений: 668
09.05.2013, 10:42     Профилирование, C++ и вставки ASM, прошу совета #2
команды асм
+еще

Добавлено через 3 минуты
прамер :
C++
1
2
3
4
5
6
7
8
9
10
void main ()
{
 _asm
  {
    int 3
    push eax
    pop eax
    int 1
  }
}
Yandex
Объявления
09.05.2013, 10:42     Профилирование, C++ и вставки ASM, прошу совета
Ответ Создать тему
Опции темы

Текущее время: 03:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru