当前位置:  技术问答>linux和unix

菜鸟请教,函数内部存在系统调用时栈空间多12byte的原因

    来源: 互联网  发布时间:2015-10-23

    本文导语:  struct tm * fun(void) {     time_t now;     now = time(NULL);     return localtime(&now); } 汇编代码: pushl %ebp movl %esp, %ebp subl $4, %esp subl $12, %esp .... 不理解为什么会有subl $12, %esp这一句?如果我不调用time,仅使用自...

struct tm * fun(void)
{
    time_t now;
    now = time(NULL);
    return localtime(&now);
}
汇编代码:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
subl $12, %esp
....
不理解为什么会有subl $12, %esp这一句?如果我不调用time,仅使用自己定义的一个函数就不会出现这个。


还有,在main函数里
.file "ttt.c"
.text
.globl main
.type main,@function
main:
#that's an empty main function
pushl %ebp
movl %esp, %ebp
subl $8, %esp

andl $-16, %esp
movl $0, %eax
subl %eax, %esp
leave
ret
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)"

为什么即使是一个空函数也会出现
subl $8, %esp
andl %-16, %esp使得栈地址16bytes对齐,为什么要这样做?

谢谢


|
这关系到Linux内核进程相关的实现,记不太清了
subl $8, %esp 应该是留给 int argc  和 char ** argv两个参数的


|
栈按16字节对齐可以提高性能

|
小弟创建了一个软件开发交流群,欢迎大家加入,群号是13181795

    
 
 

您可能感兴趣的文章:

  • (菜鸟飞飞)问个关于软中断和系统调用的问题
  • 菜鸟问题-如何从一个frame调用另一个frame?
  • 那在JAVA中怎样调用时间?(我是菜鸟)
  • 菜鸟问题4:java怎样调用外部程序?
  • 新手的菜鸟问题:不同内核版本下编译的程序能否互相调用,是否需要在同一内核下重新编译.
  • 散分先:(菜鸟问题)关于在jsp中调用xml中的数据
  • 菜鸟问题-从一个frame调用另一个frame,如何关闭或者隐藏第一个frame?
  • 菜鸟想学linux,装上redhat8.0以后,新建了个文件夹,想给他起个中文名字,怎么起呢?我就是想调用输入法!!!
  • 菜鸟问题:linux各个函数的实现源代码在哪?
  • 菜鸟问题:Linux下 ioctl 函数到底在哪?
  • (菜鸟请教)还有修改/etc/passwd文件用什么函数呢?
  • 菜鸟问题, GCC 编译出的目标码中函数前面有没有下划线呀?
  • 菜鸟求助linux最最基本的HELLO函数错误
  • 菜鸟级的问题,介绍各种类和函数的文档
  • 菜鸟问题:如何提供 Linux 下的函数库?
  • 菜鸟求助关于fork、wait、exec族函数的综合问题
  • [菜鸟问题]一个很简单的程序,提示找不到函数
  • 一个网络编程中send函数的菜鸟问题
  • 菜鸟提问:关于read函数的问题
  • 菜鸟求助 apue的例子 关于fcntl函数
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ----菜菜鸟第三问:-菜鸟菜问:JAVA如何求 根号、开次方? -----
  • 菜鸟问一个关于j2ee的菜鸟问题
  • 怎样从一个菜鸟级的java programer升级到一个菜鸟级的java developer
  • 一个连菜鸟都算不上的菜鸟
  • 菜鸟求问菜鸟问题 ,域名绑定
  • ===菜鸟系列===:写过毕业论文的前辈请进!!!菜鸟散分啦!!!!
  • gcc问题---菜鸟发问之一,老大们帮忙啊!!菜鸟分不多,只好给这点了,对不起!!
  • 菜鸟又来问菜鸟问题了
  • 菜鸟的Linux练习疑问……
  • 菜鸟刚学jsp,还不知道怎么和sql server2000的数据库相连,我已经把odbc配好了,谁能给我一段和数据库相连的并显示所有数据的代码!菜鸟
  • 菜鸟提问,我怎么装redhat7。1
  • 菜鸟写的俄罗斯方块,请多多批评!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • ※菜鸟送分之一※ Red Hat Linux 的最高版本是多少?
  • 菜鸟问题:在Java中如何接收从键盘输入的字符串?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 菜鸟提问:包是什么概念?
  • 菜鸟问题~~快点进来拿分
  • 菜鸟菜问题1


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3