linux 汇编学习

来源:互联网 发布:手机修改mac地址 编辑:程序博客网 时间:2024/06/06 17:27

1 计算机进行xor的速度要大于加载数据的速度,因此在设置寄存器的值为0时,通常用

    xorl %eax,%eax

   代替

   movl $0,%eax

2 Intel寄存器作用

   x86-64位有16个通用寄存器

   esp/rsp:  保存了当前堆栈栈顶指针的寄存器。
   ebp/rbp:  保存了当前堆栈基地址指针的寄存器。

   通常在方法调用前会保存堆栈基地址

3 通常采用%eax寄存器作为返回值


4 C 语言指针取值操作 对应汇编的

   把指针对应的值存放到寄存器中,把寄存器中的值作为内存地址,从内存地址获取值

   c语言的指针变量就是作为地址看待,通常变量作为值看待。


5 test指令

   test指令后面的连个操作数相与,不保存运算结果,只影响标志位。

   如test %rbp,%rbp 用户判断%rbp寄存器的值是否为0

6 x86-64采用寄存器传递指针和整数参数。而i386采用堆栈传递所有的方法参数。

  此操作方式x86-64快于i386。

0 0
原创粉丝点击