Что это за функция (сигнатура для MS Visual C) ?

Тема в разделе "WASM.RESEARCH", создана пользователем DenKor, 1 окт 2008.

  1. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    __allshr

    _
    Код (Text):
    1.                       _allshr        proc near      
    2.                                       cmp     cl, 40h
    3.                                      jnb     @2
    4.                                      cmp     cl,  20h
    5.                                      jnb     short @1
    6.                                      shrd    eax, edx, cl
    7.                                      sar     edx, cl
    8.                                     retn
    9. @1:
    10.                                     mov     eax, edx
    11.                                     sar     edx, 31
    12.                                     and     cl, 11111b
    13.                                     sar     eax, cl
    14.                                    retn
    15. @2:                            
    16.                                      sar     edx, 31
    17.                                      mov     eax, edx
    18.                                      retn
    19.                                       endp
    Параметры передаются в edx и cl

    Эта функция определена в файле
    ;***
    ;llshr.asm - long shift right
    ;
    ; Copyright (c) Microsoft Corporation. All rights reserved.
    ;

    ;llshr - long shift right

    Что она делает ?
     
  2. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    сдвиг eax:edx на cl вправо
     
  3. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Это что, задача на сообразительность? :):):)
    что-то типа такого:
    Код (Text):
    1. __int64 allshr(int x, unsigned char y)
    2. {
    3.     return __int64(x) >> y;
    4. }
     
  4. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Спасибо. Это функцию я встретил в иследуемой программе и не смог ее переписать на с.
    Не мог понять, что за действиями она знимается :)
     
  5. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    DenKor
    Знаешь, может помочь тупое численное экспериментирование в дебуге. Можно понять гораздо более сложные конструкции. Главное, сначала определить, что есть входные и выходные аргументы.