将汇编语言转换成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);}