题目是这样的:
有一个函数原型为
void decode1(int *xp,int *yp,int * zp);
函数的编译成汇编代码后如下:
1 movl 8(%ebp),%edi
2 movl 12(%ebp),%ebx
3 movl 16(%ebp),%esi
4 movl (%edi),%eax
5 movl (%ebx),%edx
6 movl (%esi),%ecx
7 movl %eax,(%ebx)
8 movl %edx,(%esi)
9 movl %ecx,(%edi)
要求写出等效的C代码。
分析过程:(中间伪代码)
edi = xp
ebx = yp
esi = zp
eax = *xp
edx = *yp
ecx = *zp
最后函数内的代码推测为:
*yp = *xp
*zp = *yp
*xp = *zp
用反汇编工具验证:
首先编写代码decode.c:
gcc编译:gcc -O2 -c decode.c
反汇编:objdump -d decode.o