Какой самый быстрый способ обращения к битам(например в числе)

Тема в разделе "WASM.ASSEMBLER", создана пользователем MEPOX, 13 ноя 2008.

  1. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Хотелось бы услышать какой способ обращения к конкретному биту в числе самый быстрый. Например у меня есть число 4784 надо обратиться скажем к 3 биту этого числа. Нам в политехе такое задали.. все бы ничего, но там надо обращаться в цикле, так что хотелось бы посмотреть на быстрый способ.
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    самый быстрый: test eax,100b ;jz\jnz
    не самый быстрый: shr eax,3 ;jc\jnc
    самый не быстрый: bt eax,3-1 ;jc\jnc
     
  3. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    универсальный
    Код (Text):
    1.     mov cl, num_bit
    2.     mov eax,    Number
    3.     xor ebx[b], [b]ebx[/b]
    4.     inc ebx
    5.     shl ebx,    cl
    6.     test    eax,    ebx
    7.     ;jz
    8.     ;jnz
    Косяк. Виноват. Провтыкал.
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    S_Alex
    Одноперандный xor!?
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    q_q
    +1
    S_Alex
    бред. универсальный
    Код (Text):
    1. mov ebx, number
    2. mov ecx, num_bit
    3. bt ebx, ecx
    4. ;jc
    5. ;jnc
    MEPOX
    а так же посмотри команды
    and, bsf, bsr, btc, btr, bts, not, or, rcl, rcr, rol, ror, sal, sar, shl, shr, shld, shrd, setcc, test и ... а хватит пожалуй. mmx перечислять не буду
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    MEPOX
    Кстати bt r,r\i сильно тормозит только на P4. Возможно к тому времени, как ты освоишь асм и закончишь политех
    , эти монстры издохнут окончательно и bt выйдет в лидеры по универсальности & скорости :lol:
     
  7. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    bt гораздо поудобнее, особенно если число не в регистре, а в памяти и надо обратиться к какому-нибудь 129 биту :)
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    t00x
    чет я не помню, чтобы можно было бы в bt задавать 16 байтные аргументы
     
  9. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    mov ebx, long_bit_vector_ptr
    mov ecx, bit_number

    mov eax,ecx
    shr eax,3
    mov al,[ebx+eax]
    and cl,7
    shr al,cl
    jc ...
     
  10. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    _basmp_
    IMHO это изврат лучше уж
    Код (Text):
    1. mov ebx, long_bit_vector_ptr
    2. mov ecx, bit_number
    3. bt   [ebx],ecx
     
  11. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    max7C4
    Код (Text):
    1. ...
    2. BT dword [undef], eax
    3. ...
    4. undef  dw ... ;тут были значения 16-ти двордов
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    t00x
    извиняйте но не верю, что dword'ов
    а вот на счет памяти я конечно подозревал проверку битов с номерами больше 31 (в памяти), но никогда не пробовал (не требовалось). но за науку спс.
    Код (Text):
    1. mov eax, number
    2. bt [dta], eax
    3. ;jc or jnc
    4. ...
    5. dta dd X1, X2, ... Xn
    на фасме можно и так - проверил. или так
    Код (Text):
    1. bt [eax], eax
    2. ;jc or jnc
    3. ;это не опечатка ;)
     
  13. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    /offtop
    Звучит прям как асм вариант Шекспировского "быть или не быть" :)))
     
  14. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    /offtop
    ну можно поменять c на b и будет звучать лучше
    to jb or to jnb
     
  15. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Ик.. ё мое.. мне видимо не понять гг..