读书人

将汇编语言转换成C语言,该怎么解决

发布时间: 2012-02-12 17:16:33 作者: rapoo

将汇编语言转换成C语言
将汇编语言转换成C语言怎么转换,代码如下
static void aa(unsigned long state[4], unsigned char block[64])
{
push esi
push edi

xor ecx,ecx //清零tmp2
mov esi,dword ptr [block] //
lea edi,[x]
ROLL:
mov eax,dword ptr [esi+ecx]
mov dword ptr [edi+ecx],eax
add ecx,4
cmp ecx,64
jb ROLL

pop edi
pop esi
}

[解决办法]
这段汇编程序好象不全,如lea edi,[x]中的x没有声明.猜想该程序的功能是把block拷贝到state中,但state长度不够,应该是state[16].

假定汇编程序如以下aa所示,那么对应的C程序应是aa2:

C/C++ code
#include <stdio.h>static void aa(unsigned long state[16], unsigned char block[64]){  _asm  {  push esi  push edi    xor ecx,ecx //清零tmp2  mov esi,dword ptr [block]  mov edi,dword ptr [state]ROLL:  mov eax,dword ptr [esi+ecx]  mov dword ptr [edi+ecx],eax  add ecx,4  cmp ecx,64  jb ROLL    pop edi  pop esi  }}static void aa2(unsigned long state[16], unsigned char block[64]){  int i;  unsigned char *p = (unsigned char *)state;  for (i=0; i<64; i++) *p++=block[i];}void main(){  unsigned long state[16];  unsigned char block[64]={1,2,3,4,5,6,7,8,9,10,0, };  aa2(state, block);} 

读书人网 >C++

热点推荐