__int64 Addition

Тема в разделе "WASM.BEGINNERS", создана пользователем black_hole, 3 янв 2006.

  1. black_hole

    black_hole New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    44
    Привет Всем!

    С НГ!!!

    Помогите перевести на MASM следующий код

    unsigned __int64 low;

    unsigned int range;

    low+=range

    ................

    Спасибо заранее
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Код (Text):
    1. _int64 struct ;вариант 1
    2.   lo dd ?
    3.   hi dd ?
    4. _int64 ends
    5. low1 _int64 <0,0>
    6. low2 dq 0           ;вариант 2
    7. range dd 0
    8. ;-- вариант 1 --
    9. mov eax,range
    10. add low1.lo,eax
    11. adc low1.hi,0
    12. ;-- вариант 2 --
    13. add dword ptr [low2],eax
    14. adc dword ptr [low2+4],0
     
  3. black_hole

    black_hole New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    44
    Спасибо большое, попробую!

    Не думал, что так просто:)

    Правда с paddq было бы все гораздо проще, но у меня только набор SSE, а SSE2 нет :dntknw:
     
  4. medcom

    medcom New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2006
    Сообщения:
    4
    Адрес:
    Ukraine
    Вариант 3 ММХ. Если важны расширения.

    МАСМ-ом не пользуюсь, но если судить по вышеуказанным примерам, то должно работать.



    low dq ?

    range dd ?



    ;другие действия

    MOVQ mm1,low

    MOVD mm2,range

    ;другие действия не трогая ФПУ

    PADDQ mm1,mm2

    ;другие действия не трогая ФПУ

    MOVQ low,mm1

    EMMS



    Если нужно просто добавить разок-другой, то забей на этот пример, варианты leo лучше. Хотя, если дифицит регистров...

    Ntjhbb gthtxbnfk :) ghjcnbnt/

    Почему не поддерживает. Размве масм не поддерживает? Или проц не поддерживает?
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    medcom

    Это где ты такую инструкцию откопал PADDUSQ ?!

    В мануалах Intel и AMD ничего подобного вроде нет, только PADDUSB\PADDUSW 8(
     
  6. black_hole

    black_hole New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2006
    Сообщения:
    44
    Сижу не за своим компом – проверить еще раз не могу, но paddq это инструкция SSE2 на регистрах MMX(если говорить простым языком), и поэтому у меня камень даже с SSE, но ругается на эту инструкцию, так что medcom соррии: rhbnbrf yt ghbybvftncz:)