Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6464804
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16635
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

分类: LINUX

2013-04-07 16:19:48

操作系统:ubuntu11.10

测试代码:

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     int        a = 100;
  5.     int        b = 25;

  6.     if(a > b)
  7.     {
  8.         printf("The higher value is %d\n",a);
  9.     }
  10.     else
  11.     {
  12.         printf("The higher value is %d\n",b);
  13.     }

  14.     return 0;
  15. }

测试结果:




其中:

点击(此处)折叠或打开

  1. .cfi_startproc
  2.     pushl    %ebp
  3.     movl    %esp, %ebp
作用:
函数都要这么做,先把调用者的基址寄存器保存起来,然后把当前的栈顶寄存器作为被调函数的基质寄存器


点击(此处)折叠或打开

  1. andl    $-16, %esp
作用:
andl 是逻辑与指令,而-16其实补码形式是0xfffffff0。
这条指令,%esp指向堆栈顶部。这条指令其实是为了强制让%esp的值是16的倍数。
Linux下的编译器GCC默认的堆栈是16字节对齐的,对齐其实为了加快CPU的访问效率。


点击(此处)折叠或打开

  1. subl    $32, %esp
作用:
给被调用的函数开辟栈空间的














阅读(8916) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~