Debugging 调试SHA-256实现
我一直在使用MASM32开发SHA-256实现,并完成了一些源代码。但是,我不能让它正常工作,我已经查看了它,重写了它的一些部分,并将一些源代码复制到内联Delphi ASM中,并使其完美运行,但是我原来的ASM源代码有问题。考虑到我对这方面的经验不是很丰富,有没有可能有人看看资料来源,告诉我他们是否看到了我遗漏的东西?我已经做了一个Delphi实现,它工作得很好,所以我知道这不是算法本身的错误,而是ASM代码本身的错误 在我简单地让它工作之后,我计划优化任务。但请记住,我仍在学习(自学),因此,如果你看到我在这篇文章中做了一些愚蠢的事情,我也希望能够学习。但我主要关心的是让它工作,因为我不知道错误在哪里 (由于空间问题,已删除ASM代码,因为我现在知道问题所在) 编辑:我发现了问题所在。这引出了下一个逻辑问题,因为我不知道:为什么这段代码会导致问题? 在SHA256Loop宏的末尾更改以下内容:Debugging 调试SHA-256实现,debugging,assembly,sha256,masm32,Debugging,Assembly,Sha256,Masm32,我一直在使用MASM32开发SHA-256实现,并完成了一些源代码。但是,我不能让它正常工作,我已经查看了它,重写了它的一些部分,并将一些源代码复制到内联Delphi ASM中,并使其完美运行,但是我原来的ASM源代码有问题。考虑到我对这方面的经验不是很丰富,有没有可能有人看看资料来源,告诉我他们是否看到了我遗漏的东西?我已经做了一个Delphi实现,它工作得很好,所以我知道这不是算法本身的错误,而是ASM代码本身的错误 在我简单地让它工作之后,我计划优化任务。但请记住,我仍在学习(自学),因此
ADD h, ECX
ADD h, EBX ; h := t1 + t2;
为此:
ADD ECX, EBX ; h := t1 + t2;
MOV h, ECX
修好了。为什么我不能向内存中添加两条指令,并获得与添加到寄存器和MOV到内存相同的结果?您的第一个示例中有两条
ADD
指令,这取决于h
之前的内容。第二个示例与前面的h
内容无关。如果不能保证h
的值为零,那么这两个示例的行为将有所不同。现在我考虑代码时就考虑到了这一点。谢谢我知道这可能是我忽略的一件简单的事情!