鱼C论坛

 找回密码
 立即注册
查看: 4222|回复: 2

求把一段汇编还成C代码。

[复制链接]
发表于 2012-12-11 21:01:41 | 显示全部楼层 |阅读模式
35鱼币
MOV EAX,DWORD PTR DS:[ECX] //  取出根结点
MOV DL,BYTE PTR DS:[EAX+15]
if( dl==0)
{
      MOV EDX,DWORD PTR DS:[EAX+8]      取右结结点
      PUSH EBX
      MOV BL,BYTE PTR DS:[EDX+15]
      if ( bl==0)
      {
          MOV EAX,DWORD PTR DS:[EDX]
          MOV BL,BYTE PTR DS:[EAX+15]
           if(bl==0)
           {
               LEA ECX,DWORD PTR DS:[ECX]
               do{  
                    MOV EDX,EAX                                    
                    MOV EAX,DWORD PTR DS:[EDX]   遍历左子树;
                    MOV BL,BYTE PTR DS:[EAX+15]
                  } while(bl==0)
            }  
             MOV DWORD PTR DS:[ECX],EDX
             POP EBX
             RETN
        }
           MOV EAX,DWORD PTR DS:[EAX+4]            返回父结点
           MOV DL,BYTE PTR DS:[EAX+15]
           if(dl==0)
              {
                 do{
                      MOV EDX,DWORD PTR DS:[ECX]
                      if( EDX!=DWORD PTR DS:[EAX+8])
                           break;
                      MOV DWORD PTR DS:[ECX],EAX
                      MOV EAX,DWORD PTR DS:[EAX+4]
                       MOV DL,BYTE PTR DS:[EAX+15]
                    } while(dl==0)
               MOV DWORD PTR DS:[ECX],EAX     写入结点结构;
            POP EBX
   }   
   RETN
最近在练习反汇编...  

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-12-12 14:53:36 | 显示全部楼层
class stret
{
        NODE* head;
public:       
        void pn(void)
        {
                NODE* p= head;
                if(p->Ltabl==0)
                {
                        p=p->RChild;
                        if((p->Ltabl==0))
                        {
                                p=p->LChild;
                                while(p->Ltabl==0)      //遍历左结点
                                {
                                        p=p->LChild;
                                }
                                head=p;
                                return ;
                        }
                        else
                        {
                                p=p->pa ; //返回父结点
                                while(p->Ltabl==0)
                                {
                                        NODE* t =head;
                                        if(t!=p->RChild )
                                                break;
                                        head =p;
                                        p=p->pa;
                                }
                                head =p;
                        }
                        return ;
                }
};
今天终于把他还原的。还不知道弄错了没? 请问这段代码是什么意思。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-12 21:31:44 | 显示全部楼层
扫一眼。。。貌似是在遍历二叉树。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 20:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表