一段汇编代码翻译成c语言的练习
来源:互联网 发布:网吧维护管理源码 编辑:程序博客网 时间:2024/04/29 22:12
题目是这样的:
有一个函数原型为
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
反汇编代码如下:
翻译机器的反汇编代码为:
*yp = *xp
*zp = *xp
*xp = *xp
原本的函数代码:
*yp = *xp
*zp = *yp
*xp = *zp
貌似有点差距,但仔细一看,其实是一模一样的,看来计算机还是能看透事物的本质啊!!(其实这段函数功能就是三个值都等于*xp啊)
- 一段汇编代码翻译成c语言的练习
- 将C语言的声明翻译成通俗的语言
- 把 汇编代码翻译成二进制机器代码
- 把 汇编代码翻译成二进制机器代码
- 把 汇编代码翻译成二进制机器代码
- 高级语言的一段汇编代码分析
- 把c语言中的声明用程序翻译成通俗的语言
- 编写一个程序,把C语言的声明翻译成通俗语言
- 将C语言的声明翻译成通俗语言——cdecl
- IDA 汇编码反编译成C代码
- 一段C语言写的病毒代码
- 能自动将软件翻译成不同语言的工具
- C程序翻译成汇编语言
- 求C翻译成c#
- 史上最牛的一段汇编代码
- 一段代码的反汇编
- 一段汇编代码的分析
- VS2015环境下查看C语言编译成的汇编语句的方法
- 云计算简介—Submitted By Azure Forum Support Team
- VS2010 使用过程中碰到的一个DLL导入失败的问题
- 云计算和数据 关于Windows Azure Table Storage 和 SQL Azure的选择
- C# 多线程之一:信号量Semaphore
- C#多线程之二:ManualResetEvent和AutoResetEvent
- 一段汇编代码翻译成c语言的练习
- 桶排序
- 2010年10月31日 博文日志
- 最大N算法(前一版本的改进)
- Fedora14即将发布,新增以下特性
- 腾讯和360之争之二
- 解决MySQL数据库的中文乱码问题
- pku 2362_Square 深搜+回溯
- sfsf