Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > X86和ARM堆栈组织结构比较
【标  题】:X86和ARM堆栈组织结构比较
【关键字】:X86,ARM
【来  源】:http://blog.chinaunix.net/article.php?articleId=5690&blogId=2214

X86和ARM堆栈组织结构比较

Your Ad Here

zu  作为硬件平台,arm和x86是比较有代表性的两个了。而在bootloader或操作系统编程方面,堆栈/参数传递/返回值是系统编程常常关注的一些内
容,对比他们的差异对理解操作系统会有所帮助

1          返回值:

1)        X86采用eax作为返回值。

return i;

23:   c7 45 08 1e 00 00 00    movl   x1e,0x8(%ebp)

2a:   8b 45 08             mov    0x8(%ebp),%eax

2d:   89 c0                mov    %eax,%eax

2)        ARM使用r0作为返回值。

return i;

  44:      e50b3010      str r3, [fp, -#16]

  48:      e51b3010      ldr       r3, [fp, -#16]

  4c:      e1a00003      mov      r0, r3

2          参数传递

1)        X86:主要是采用堆栈,除非指定以寄存器传递(通过“regparm (NUMBER)”注:NUMBER<=3指定)。

如果指定寄存器传递参数,则eax为第一个参数,edx为第二个参数, ecx为第三个参数。

int hello(int );

t=hello(13);

9:     6a 0d            push   xd

b:     e8 fc ff ff ff       call  c

2)        ARM:寄存器到堆栈,首先将参数赋给r0, r1等,同时,未经优化的代码,在函数的堆栈中,也会为每个参数预留一个参数堆栈。

ARM的参数结构看起来比较奇怪,对其的解释是:出于效率考虑,如果在函数中的寄存器足够分配的话,则经过优化后,它不会进栈,而直接使用寄存器即可。这样的方式可以保证优化只局限于函数内部,实际上一般使用-O优化过的代码最终普遍在函数中不再进栈的。

int hello(int );

t=hello(13);

未优化:

10:   e3a0000d       mov r0, #13    ; 0xd 

14:   ebfffffe     bl     0

… …

……

3c:   e50b0010       str   r0, [fp, -#16]

优化后:

   4:      e3a0000d       mov r0, #13    ;

bl

  1c:      e1a0f00e        mov pc, lr

 

 

 

第一次用BLOG:【上一篇】
Multi-Threaded Programming With POSIX Threads:【下一篇】
【相关文章】
  • AT&T x86 asm 语法! for linux kernel
  • 关于ARM处理器Remap的理解 (抄的)
  • john carmack访谈二
  • john carmack访谈五
  • 从 Solaris 迁移到 x86 上的 Linux 指南
  • CentOS 4 -ix86
  • GNU for x86汇编语法
  • 针对ARMSYS44B0X的minicom设置
  • 构建嵌入式linux系统(ARM)
  • redflag-linux workstation 5 md5校验码(x86/x86-64)
  • 【随机文章】
  • Those Good Old Days
  • Linux主机用IP Masquerade功能 ,使其他没有IP地址电脑经由Linux机器访问网络(2)
  • 禁止Windows tftp客户端的使用
  • 群星COM+中corePack部分的源码
  • 一个JSP文件管理器也可当jsp木马用(2)
  • 操作系统常见问题:操作系统启动变慢的几个原因
  • 孙鑫VC++笔记
  • 数据结构(第二版,C语言版)严蔚敏编著 第一章绪论中的错误
  • imail: SSL Failed to Load Certificate File
  • NFSv4 提供无缝的网络访问
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.