zoukankan      html  css  js  c++  java
  • arm-elf-gcc汇编代码个人理解

    arm-elf-gcc汇编代码个人理解

    有关arm-elf-gcc的安装使用问题请参照本人博客的另一篇文章http://www.cnblogs.com/wsine/p/4664503.html

    由于各种对齐问题,cnblogs的格式难以控制,故贴图片,谅解。

    111
    222
    333
    444

    分析:第三份代码Clear3.c的效率是最快的。在Clear1中,要获得array[i]这个变量的值,就需要多花几部去计算从&array[0]开始,偏移i位之后的地址,然后才能得到array[i]这个地址,效率慢。在Clear2中,用了指针,修复了取地址的这个问题,但是也产生了另一个问题,&array[size]的获得也是类似与Clear1中的array[i]的获得,也是需要每次都计算偏移量,才能比较,效率慢。而在Clear3中,也是用了指针,虽然多使用了一个栈的空间,但是用了保存了&array[size]这个变量,因此只需要计算一次就可以,每次需要比较的时候再从栈中读取,不用每次计算,大大节省的重复运算的消耗。综上所述,Clear3.c的效率是最快的。

    刚开头的栈指针和帧指针尤其不懂编译器为何要这样做。通过搜索,我发现了答案。

    666
    注:图片来自51CTO.com

    这个是我对栈指针和帧指针的最大的理解。两者虽然指向同一片区域,但是一个是栈的起始位置,一个栈顶,不一样的,访问的时候通过fp指针的偏移量来访问。

  • 相关阅读:
    Windows下git使用代理服务器的设置方法
    SQL backup&restore
    css3 随记
    HTML5 上传图片预览
    jQuery.event.move
    css3 html5 手机设备 列表的弹回和加速移动
    16进制与utf-8
    android 使用现成做get请求
    android 往sd卡中写入文件
    android 遍历控件
  • 原文地址:https://www.cnblogs.com/wsine/p/4664552.html
Copyright © 2011-2022 走看看