首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试SHA-256实现

调试SHA-256实现
EN

Stack Overflow用户
提问于 2012-10-12 19:55:12
回答 1查看 994关注 0票数 0

我一直在使用MASM32开发一个SHA-256实现,并获得了一些源代码。然而,我无法使它正常工作,我看过它,重写了它的一些部分,并将一些源代码复制到内联Delphi ASM中,并使它完美地运行,但是我的原始ASM源代码有问题。考虑到我在这方面的经验还不够丰富,有人能不能看看消息来源,告诉我他们是否发现了我遗漏的东西?我已经做了一个Delphi实现,并且它运行得很好,所以我知道这不是算法本身的错误,而是ASM代码本身。

在我简单地完成任务后,我就计划优化它。但请记住,我仍然在学习(自学),所以如果你看到我做的事情是愚蠢的,在这个来源,我也希望能够学习。但我最关心的是让它正常工作,因为我不知道错误在哪里。

(删除了用于空间问题的ASM代码,因为我现在知道问题了)

编辑:我知道问题出在哪里了。这引出了下一个逻辑问题,因为我不知道:为什么这段代码会导致问题?

在SHA256Loop宏的末尾更改以下内容:

代码语言:javascript
复制
ADD  h, ECX  
ADD  h, EBX  ; h := t1 + t2;

对此:

代码语言:javascript
复制
ADD  ECX, EBX  ; h := t1 + t2;
MOV  h, ECX

修好了。为什么我不能在内存中添加两个指令,并获得与添加注册和内存中的MOV相同的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-13 02:21:42

包含两个ADD指令的第一个示例取决于h的先前内容。第二个示例独立于h之前的内容。如果h的值不能保证为零,那么这两个示例的行为将有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12866168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档