码迷,mamicode.com
首页 > 其他好文 > 详细

Assembly instructions 汇编指令解析 A&AT

时间:2014-05-13 06:28:37      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:汇编      


                                                                  Assembly instructions

汇编初步学习

汇编0基础的戳上面,刷一遍,包治百病






%eax寄存器的值与C语言的return的值相对应

(%esp)地址处储存的是函数的返回地址 return address



%esp 栈顶寄存器 保存栈顶指针。

%ebp = boundary between parameters and local variable

函数执行时不要改变这个寄存器的值!


pushl 指令究竟都干了什么:

            pushl x

等价于

            subl $4, %esp;

            movl x, (%esp) 


            有个常遇到的汇编代码 pushl %ebx 有点意思,

            这里就等价于

            subl $4 %esp

            movl %ebx (%esp)

  这里就把%ebx 寄存器的值储存在%esp 指向的内存地址了



同样popl命令与之相反.

             popl x

             movl %(esp) x

             add $4 %esp

这里就相当于恢复了原来x的值(x是寄存器)

bubuko.com,布布扣

calll  0x4005e8 <map>

就相当于

push %eip

jump 0x4005e8


bubuko.com,布布扣


ret 就相当于

popl %eip

leavel 相当于

movl %ebp, %esp; //恢复原来的栈顶

popl %ebp


如果编译器意识到没有变更%ebp的值,那么就会用调用leave,而是直接popl

例如仅有一个main函数的时候




leal 指令

我今天才知道 lea 是load effective address的缩写。。。

仅仅是简单的算术运算,不是解引用

    leal    0x400580,%rcx
把0x400580 加到%rcx里面去


 








bubuko.com,布布扣





Assembly instructions 汇编指令解析 A&AT,布布扣,bubuko.com

Assembly instructions 汇编指令解析 A&AT

标签:汇编      

原文地址:http://blog.csdn.net/cinmyheart/article/details/25558911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!