一个汇编小demo的详解
来源:互联网 发布:c语言标准库函数表格 编辑:程序博客网 时间:2024/06/05 11:05
<span style="font-size: 18px;">C语言代码如下:</span>
int exchange(int *xp, int y){int x = *xp; *xp = y;return x;}
今天主要还是看了mov的指令,所以就根据程序内的两个变量转化的操作谈一下映射到汇编语言的情况。。。。。不得不说,今天刚刚一脚踏进汇编的水里,就有一种随时可能会被淹死的感觉。。。。(太抽象了有木有)
汇编代码如下
xp at %ebp + 8
y at %ebp + 12
这是汇编代码里面的两条注释,意思就是说xp 和y 这两个变量是分别存在于这两个内存地址中的,其实这两条如果变为寻址形式的话,应该是变为8(%ebp) 12(%ebp),这两个内容和%ebp + 8, %ebp +12应该是一样的。都是两个变量的地址
movl 8(%ebp), %edxmovl (%edx) , %eaxmovl 12(%ebp), %ecxmovl %ecx. (%edx)
一开始其实没太看懂,主要是因为(%ebp)这样的没懂,后来翻了下书才知道,这样就是表示表示一个取址操作,去寻找值为ebp寄存器中存储的值的内存地址
第一条指令也就是说把 xp给了%edx这个寄存器,但是请注意此时的xp的值是一个地址
第二条指令执行了M[%edx]->%eax这样的操作,把*xp传送给%eax
第三条指令与第一条指令相同,把y的值传送给ecx这个寄存器
第四条指令也很清楚,将y的值传送给x值所在的内存区域,把x的值给覆盖。
总之,汇编不容易啊,我擦,就是我写这博客的时候我还被转悠晕了几次。。。。。。CSAPP这本书真是不容易看
0 0
- 一个汇编小demo的详解
- WCF的一个小Demo
- xml的一个小Demo
- DotNetMQ的一个小demo
- 简单的一个小Demo
- vs内联汇编的一个小问题
- 关于汇编的一个小问题!
- 一个51汇编的小错误
- 【汇编】一个大小写转换的小trick
- 用Axis2c 实现一个Web service 的小demo程序过程详解
- 用Axis2c 实现一个Web service 的小demo程序过程详解
- javascript读写cookie的一个小demo
- 关于分页的一个小demo
- 关于分页的一个小demo
- GMP的 一个Demo小程序
- 一个文件夹加密的小程序【demo】
- CXF发布webservice的一个小demo
- 内核钩子的一个小demo
- kgkjgkjgkjg
- 跟着辛星一起学PHP中的常用的字符串函数
- 黑马程序员Java学习日记(8)网络编程
- android的listView变为透明
- Linux启动内存分配器
- 一个汇编小demo的详解
- 泛型类定义和泛型方法以及泛型限定
- 黑马程序员--java 知识回顾--内部类和字符串
- 视频采集与处理(BT656简介)
- 浅谈C++容器(二)
- iOS开发高级主题【长期填坑】
- hdu3329 二分+搜索
- 【SDnoip2014夏令营】【day5】
- Memcached中获取所有的key