Констукции masm32

Тема в разделе "WASM.BEGINNERS", создана пользователем Zmiy, 27 фев 2007.

  1. Zmiy

    Zmiy New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2007
    Сообщения:
    29
    Возможно, вопрос глупый, но всё же...
    Подскажите, пожалуйста, следующие инструкции будут выполняться с одинаковой скоростью?
    1)
    .if eax == ebx
    inc ecx
    .endif
    ...
    2)
    cmp eax, ebx
    je inc_ecx
    jmp next
    inc_ecx:
    inc ecx
    next:
    ...
     
  2. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    .if - не инструкция а макрос. в даном конкретном случае он,наверное, скомпилится в такой код
    cmp eax,ebx
    jne @f
    inc ecx
    @@:
     
  3. Zmiy

    Zmiy New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2007
    Сообщения:
    29
    Спасибо
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    все, что начинается с точки, в масме - макросы.
    .if, .while и прочие прочие прочие...
    invoke, кстати, тоже не команда.
    Реальные команды ассемблера можно посмотреть в справочнике.
     
  5. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Код (Text):
    1. cmp eax, ebx
    2. je inc_ecx
    3. jmp next
    4. inc_ecx:
    5.   inc ecx
    6. next:
    7. ...
    Это не совсем дзенно...

    а вот так дзенно:

    Код (Text):
    1. cmp eax, ebx
    2. jne next
    3.   inc ecx
    4. next:
    5. ...
     
  6. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    nitrotoluol
    зато код
    Код (Text):
    1. jne dword ptr [eax]
    получить нельзя, а код
    Код (Text):
    1. je @f
    2. jmp dword ptr [eax]
    3. @@:
    можно ;)
     
  7. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Mikl__
    А еще обнулить регистр еах
    вот так нельзя:
    jnz eax

    А вот так можно:
    xor eax,eax

    При чем тут обнуление регистров? Я тоже не знаю причем...
    и
    jmp dword ptr [eax] я тоже не понял при чем тут....
     
  8. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    nitrotoluol
    я о косвенной адресации, при чем тут обнуление регистров