mirror of
https://github.com/stasenso/SHA256.git
synced 2026-06-27 05:42:43 +03:00
Wt 18 некорректный расчёт
This commit is contained in:
+19
-2
@@ -1,2 +1,19 @@
|
||||
После подключения DLL вызывающая прогамма ловит исключение через 20-30 секунд (в дебагере - сразу). Похоже, глюк в адресации. Проверить возвращаемые значения.
|
||||
Проблема оказалась в том, что в wndproc переменные я хранил локально, что давало исключене после вызова DLL
|
||||
в секции .data глюк: несколько массивов (DUP) находятся под разными метками, но имеют один адрес в дебагере
|
||||
Конкретно: k_konst и sha_hash
|
||||
Решилось: неправильно использовал оператор DUP: Надо сначала писать сколько, а в скобках (чего). 10 dup (0), а я писал наоборот
|
||||
|
||||
Остановился на деление по модулю. Нужно разделить весь объём на величину отрезка. Пока исключение, видимо потому, что 64-битные регистры использую.
|
||||
Решено: не обнулял rdx. Деление происходит не одного rax, а пары rdx:rax. Вылетало по переполнению.
|
||||
|
||||
Разобраться с прологом и эпилогом. Сейчас их нет и обращение идёт по недопустимому адресу т.к. в rbp ноль.
|
||||
Решено: пролог и эпилог подставляются автоматически, если установить опции:
|
||||
OPTION PROLOGUE:PrologueDef
|
||||
OPTION EPILOGUE:EpilogueDef
|
||||
Кстати, enter - везде пишут, что он тормозной и лучше использовать push ebp; mov ebp,esp. А sub esp,nnn нужен, чтобы вызываемая процедура могла делать push
|
||||
и не перезаписывать при этом локальные переменные.
|
||||
|
||||
Написать в Excel скрипт, который в зависимости от i, даёт имя регистра в котором есть i-15, i-2 и i-16, выдавая при этом порядок байт, при котором команда pshufd выдвинет
|
||||
искомое слово на младшие 32 бита XMM регистра
|
||||
- Сделано
|
||||
|
||||
Закончил расчёт w16, считает павильно. Но пока не получилось правильно сохранить в XMM4
|
||||
Reference in New Issue
Block a user