Оптимизация

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

  1. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Народ! помогите оптимизировать след. код (по времени/по месту - хоть как нибудь, но лучше по времени)
    Код (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
    гм.. как все любят эти макросы типа .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
    Код (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
    Всем респект! Щас буду переделывать.
     
  5. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Макросы, переходы, масм ... какая гадость!
    Код (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
    Ладно, этот код переделал.
    Ещё вопрос: что предпочтительнее юзать: or ebx, ebx или test ebx, ebx?
     
  7. koderr

    koderr New Member

    Публикаций:
    0
    RamMerLabs
    test, т.к. он лучше спаривается
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Всем спасибо!
     
  9. Nouzui

    Nouzui New Member

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

    Nail RustyNail

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