zoukankan      html  css  js  c++  java
  • 一个简单函数的C代码和汇编代码

    int exchange(int *xp,int y)

    {

      int x=*xp;

     *xp=y;

    return x;

    }

    省略了栈的建立和完成部分的汇编代码如下:

    //xp at %ebp+8,y at %ebp+12

    1     movl  8(%ebp),%edx

    2     movl  (%edx),%eax

    3     movl  12(%ebp),%ecx

    4     movl  %ecx,(%edx)

    注:

    1.int x=*xp;表示将读存储在xp所指位置中的值,并将它存放在名字为x的局部变量中;

    2.*xp=y;表示将参数y的值写到xp所指向的位置;

    3.间接引用指针就是将该指针放在一个寄存器中(movl  8(%ebp),%edx),然后在存储器引用中使用这个寄存器(movl  (%edx),%eax)

    4.像x这样的局部变量时存放在寄存器中的,而不是存储器中;

    5.声明变量语句是不产生相应的汇编语句的;

    6.函数参数的值存放中存储器中。

  • 相关阅读:
    PMO的重要性
    idea CPU过高问题
    近期面试心得
    Spring-Eureka
    BIO/NIO
    redis redlock
    nmon 安装及使用 【linux环境】
    一致性hash 算法
    gossip协议了解
    00008
  • 原文地址:https://www.cnblogs.com/liujiangyi/p/2146344.html
Copyright © 2011-2022 走看看