Оптимизация

Discussion in 'WASM.WIN32' started by RamMerLabs, Feb 11, 2007.

  1. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    Народ! помогите оптимизировать след. код (по времени/по месту - хоть как нибудь, но лучше по времени)
    Code (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

    Blog Posts:
    0
    Joined:
    Nov 17, 2006
    Messages:
    856
    гм.. как все любят эти макросы типа .if .else итд!
    Code (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

    Blog Posts:
    0
    Joined:
    Mar 12, 2005
    Messages:
    952
    Location:
    Russia
    Code (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

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    Всем респект! Щас буду переделывать.
     
  5. Black_mirror

    Black_mirror Active Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2002
    Messages:
    1,035
    Макросы, переходы, масм ... какая гадость!
    Code (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

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    Ладно, этот код переделал.
    Ещё вопрос: что предпочтительнее юзать: or ebx, ebx или test ebx, ebx?
     
  7. koderr

    koderr New Member

    Blog Posts:
    0
    Joined:
    Sep 29, 2006
    Messages:
    205
    RamMerLabs
    test, т.к. он лучше спаривается
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    Всем спасибо!
     
  9. Nouzui

    Nouzui New Member

    Blog Posts:
    0
    Joined:
    Nov 17, 2006
    Messages:
    856
    Black_mirror
    респектище!
    вот он, настоящий ассемблерный изврат...
     
  10. Nail

    Nail RustyNail

    Blog Posts:
    0
    Joined:
    Jul 16, 2006
    Messages:
    10
    Да уж, сам если на асме пишу раз по десять переписываю)