Я работал над реализацией SHA-256 с использованием MASM32 и сделал исходный код. Однако я не могу заставить его работать правильно и просмотрел его, переписал его фрагменты и скопировал некоторый исходный код во встроенный ASM Delphi, и он отлично работает, но у моего исходного исходного кода ASM есть проблемы. Учитывая, что у меня нет невероятного опыта в этом, возможно ли, чтобы кто-нибудь посмотрел на источник и сказал мне, увидит ли он что-то, что я упустил? Я уже сделал реализацию Delphi, и она отлично работает, поэтому я знаю, что виноват не сам алгоритм, а сам код ASM.
Я планировал оптимизировать задачи после того, как просто заработал. Но имейте в виду, что я все еще учусь (самоучка), поэтому, если вы увидите что-то глупое, что я делаю в этом источнике, я тоже хотел бы иметь возможность учиться. Но моя главная забота - заставить его работать, так как я не вижу, где находятся ошибки.
(Удален код ASM для проблем с пространством, так как теперь я знаю проблему)
Редактировать: я понял, в чем проблема. Что приводит к следующему логическому вопросу, поскольку я не знаю: почему этот код вызвал проблему?
Изменение следующего в конце макроса SHA256Loop:
ADD h, ECX
ADD h, EBX ; h := t1 + t2;
К этому:
ADD ECX, EBX ; h := t1 + t2;
MOV h, ECX
Починил это. Почему я не мог выполнить две инструкции ADD для памяти и получить тот же результат, что и ADD для регистрации, а затем MOV для памяти?