Оптимизация

Тема в разделе "WASM.WIN32", создана пользователем RamMerLabs, 11 фев 2007.

  1. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Народ! помогите оптимизировать след. код (по времени/по месту - хоть как нибудь, но лучше по времени)
    Код (Text):
    1.   mov ebx, ext1
    2.   shr ebx, 31
    3.   and ebx, 1
    4.  
    5.   mov ecx, ext1
    6.   shr ecx, 30
    7.   and ecx, 1
    8.   .if ebx && !ecx
    9.    add eax, 4
    10.   .elseif ecx && ebx
    11.    add eax, 8
    12.   .endif
    13.  
    14.   mov ebx, bas1
    15.   shr ebx, 25
    16.   and ebx, 1
    17.   .if ebx
    18.    add eax, 16
    19.   .endif
    таких операций - очень много, поэтому код работает медленно; меняются только переменные: ext1, bas1 и т.д., число бит на которые нужно смещать shr-ом и добавляемое к eax число (степени 2)
    ЗЫ: компилер - MASM.
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    гм.. как все любят эти макросы типа .if .else итд!
    Код (Text):
    1.   mov ebx, ext1
    2.   test ebx, 080000000h
    3.   jz @@1
    4.   add eax, 4
    5.   test ebx, 040000000h
    6.   jz @@1
    7.   add eax, 4
    8. @@1:
    9.   test bas1, 2000000
    10.   jz @@2
    11.   add eax, 16
    12. @@2:
    мож и еще лучше можно..
     
  3. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Код (Text):
    1.  mov ebx, ext1
    2.   rcl ebx,1
    3.   jnb @@1
    4.   add eax, 4
    5.   rcl ebx,1
    6.   jnb @@1
    7.   add eax, 4
    8. @@1:
    9.   test bas1, 2000000
    10.   jz @@2
    11.   add eax, 16
    12. @@2:
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Всем респект! Щас буду переделывать.
     
  5. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Макросы, переходы, масм ... какая гадость!
    Код (Text):
    1.     mov ecx,ext1
    2.     shr ecx,30
    3.     mov ebx,1
    4.     shl ebx,cl
    5.     and ebx,12
    6.     add eax,ebx
    7.     mov ebx,bas1
    8.     shr ebx,21
    9.     and ebx,16
    10.     add eax,ebx
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Ладно, этот код переделал.
    Ещё вопрос: что предпочтительнее юзать: or ebx, ebx или test ebx, ebx?
     
  7. koderr

    koderr New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    205
    RamMerLabs
    test, т.к. он лучше спаривается
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Всем спасибо!
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Black_mirror
    респектище!
    вот он, настоящий ассемблерный изврат...
     
  10. Nail

    Nail RustyNail

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    10
    Да уж, сам если на асме пишу раз по десять переписываю)