Сейчас на форуме: _MBK_, asfa, Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Оптимизация hyperthreading или защита?
Посл.ответ Сообщение

Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 29 апреля 2009 21:50 · Поправил: SVLab
· Личное сообщение · #1

Есть одна dll, во многие подпрограммы вшит код такого вида (более 500 мест):
Code:
  1. MOV EAX,DWORD [VAR1]
  2. MOV ECX,EAX
  3. SHL ECX,xx             / циклический сдвиг числа вправо на количество
  4. SHR EAX,yy             | бит,определяемое младшей цифрой операнда
  5. OR ECX,EAX             \ команды SHR
  6. MOV EAX,ECX
  7. MOV ECX,EAX
  8. SHR ECX,1              /
  9. XOR ECX,EAX            | проверяется равенство двух младших бит
  10. TEST CL,1              \ 
  11. JE SHORT MET1          ; если не равны,
  12. XOR EAX,3              ; меняется четность
  13. MET1:
  14. MOV DWORD [VAR1],EAX
  15. MOV DWORD [VAR2],EAX

Адресов для VAR1 всего 3, а адрес для VAR2 у каждого такого куска всегда разный. Нашел всего несколько мест, где проверяется VAR2, но перед этим она всегда переписывается, т.е. становится равной VAR1. В этих же местах перед проверкой стоят небольшие циклы задержки. Сначала я принял это за какую-то защиту от патча, т.к. при небольших модификациях программы она начинает вести себя непредсказуемо: может нормально работать, может неправильно обрабатывать данные на каких-то режимах, а может вообще вылететь, и в одном случае обход подобного куска восстановил нормальную работу. По мере копания у меня начала расти уверенность, что это не защита, а оптимизация поддержки HT, т.к. в нескольких кусках такого кода данные для VAR1 берутся из другого адреса, а пишутся после обработки в один из этих трех. (ну и еще почитал http://www.3dnews.ru/cpu/hyper-treading и http://www.microsoft.com/Rus/Msdn/Magazine/2005/06/HyperThreading.mspx , очень похоже).
Кто знает, как может выглядеть оптимизация для HT на асме, подтвердите или опровергните.
Лежит здесь http://webfile.ru/3444828 , пароль svl63, ~600кб

Добавлено
Все-таки, это защита.


 eXeL@B —› Вопросы новичков —› Оптимизация hyperthreading или защита?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати