32-x

Тема в разделе "WASM.HEAP", создана пользователем trr, 8 июн 2008.

  1. trr

    trr New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2006
    Сообщения:
    52
    Только что прочитал статью http://wasm.ru/article.php?article=1010001 Решил проверить:
    Код (Text):
    1. mov eax, 1
    2. METKA:
    3. add eax, 1
    4. cmp eax, 4000000000
    5. jne METKA
    Код (Text):
    1. N dd 1
    2. ...
    3. mov N, 1
    4. METKA:
    5. add N, 1
    6. cmp N, 4000000000
    7. jne METKA
    Первый выполнялся 2 секунды, второй 8 секунд. Можно ли сделать какую то программу которая в уже в готовом ".exe" сделает все необходимые изменения из той статьи для повышения скорости? :))
     
  2. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    В общем случае, думаю, нет. Необходим глобальный анализ кода и продумывание вариантов использования для данной цели регистров. Что если, скажем, переменная, с котоой в исходной процедуре активно работали, будет использоваться и вне этой процедуры, тогда как при использовании только регистров она останется пуста? И какие регистры стоит оставить нетронутыми, а какие можно менять? Скажем, у меня в "джентльменском наборе" есть функция, возвращающая результат не только в EAX, но ещё и в EDX. Без вдумчивого анализа, который самые современные программы - и те едва ли способны реализовать, тут делать нечего.
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    trr
    загрузки 4000000000 в регистр будет еще быстрее ;)
    и цикл разверни, тогда вообще взлетит с отрывом от земли ;)
    нормальные компиляторы все это делают сами. Intel C++ чуть круче чем gcc, но гнус более гибкий в плане настройки, зато у интеля есть свой профайлер, выполняющий компиляцию с учетом реальной оперативной обставновки. это, конечно, не для асмовских программ, которые оптимизить приходится вручную.
     
  4. trr

    trr New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2006
    Сообщения:
    52
    Ещё на 25% быстрее, но 19 байт :)
    Код (Text):
    1. BA0EF70000  MOV EDX,0F70E
    2. 2BC9        SUB ECX,ECX
    3.              METKA:
    4. 41          INC ECX
    5. 2BC0        SUB EAX,EAX
    6.              METKA1:
    7. 40          INC EAX
    8. 3BC2        CMP EAX,EDX
    9. 75FB        JNZ SHORT METKA1
    10. 3BCA        CMP ECX,EDX
    11. 75F4        JNZ SHORT METKA
    Вобщем, как я понял из ответов, бессмысленная затея.