美文网首页
arm64汇编篇-13编译器优化及寄存器与多线程问题

arm64汇编篇-13编译器优化及寄存器与多线程问题

作者: ClementGu | 来源:发表于2018-06-04 16:18 被阅读32次

编译器模式

 Debug Release不同模式下编译器的配置不同的,buildSettings -> 搜索optimization 如下图:


编译器优化选项

以下几个模式是将编译器优化的几个方向。

编译器优化效果

1.将Debug选项的none 选择为跟Release 模式下的Fastest Smallest
2.去掉main函数的循环写入以下代码:

    int a = 1;
    int b = 2;
    return 0;

3.运行结果


未优化的main函数 优化编译器
4.解析
 由上图可以看出,main函数由原来很长的开辟栈空间存取a、b数值等操作简化成一个return 0 的操作。
注:优化后的编译器是将所有没有用到的代码都去掉了
编译器对函数的优化

1.写函数方法:

int func (int a,int b)
{
    return a + b;
}

2.运行None模式和fastest Smallest模式效果如下:


None模式运算 fastest 模式运算

3.解析:
可以看出在None模式下汇编语言是进行正常的流程操作。
而在fastest模式下,函数int c的值并没有进行函数的运算而是直接赋值,**###因为函数在编译的时其算法就被编译器知道所以这边没有进行计算而是直接给出编译器结果###**

总结:

1.我们在Debug模式下,编译器的运行效率和包的大小是不如Release模式的。
2.编译器优化将不会运行无效代码以确保汇编的代码量,同时已知函数的算法在运行函数的时候可能直接给出结果而不去进行运算。
3.当然针对函数的编译优化,函数是静态的,oc是动态的编译的时候不知道方法是需要在内存中找,所有编译器优化在函数级别。
4.执行指令越多越耗时。
5.速度 寄存器>高速缓存>内存>磁盘。
6.代码的读取方式 程序启动 -> 磁盘读取到内存 -> 内存一部分放到高速缓存 ->pc访问高速缓存

多线程与寄存器

  • 线程的切换由操作系统去操作的(以前学的时候可能说是cpu)。
  • 操作系统在切换线程的时候会进行寄存器的保护。
  • 所有防止资源抢夺的都是对内存的操作,寄存器由系统负责不需要考虑。

相关文章

  • arm64汇编篇-13编译器优化及寄存器与多线程问题

    编译器模式  Debug Release不同模式下编译器的配置不同的,buildSettings -> 搜索opt...

  • IOS arm64常用的汇编

    导论 生成汇编文件 寄存器 arm64 汇编条件域 arm64 汇编指令 总结 1. 生成汇编文件 2. 寄存器 ...

  • ARM64 学习

    iOS汇编 真机 arm64汇编,GNU 模拟器 x86, AT&T 汇编 寄存器 指令 堆栈 通用寄存器 64b...

  • 认识ARM64汇编

    [TOC] 之前说过学习汇编就是学习寄存器和指令,查看代码请连接真机。 寄存器 在arm64汇编中寄存器是64bi...

  • 汇编

    iOS汇编 arm64,x86,armv7 生成汇编文件 寄存器 通用寄存器64bit:x0-x2832bit:w...

  • arm64汇编基础

    iOS汇编 真机:arm64汇编 模拟器:x86汇编 将c语言的代码转化成汇编: 1. 寄存器 lldb查看当前a...

  • 4. ARM寄存器

    1. 简书-ARM寄存器讲解2. ARM寄存器解析3. ARM64汇编-寄存器和指令4. 堆栈基础-windows...

  • 入门二

    [转]ARM64 汇编 寄存器 汇编指令栈栗子 逆向工程绕不过的一部分就是汇编指令的分析。我们iPhone里面用到...

  • ARM64汇编学习_2_寄存器、常用指令、堆栈平衡

    1. 寄存器; 2. 常用指令; 3. 函数的堆栈; PS:学习ARM64汇编时、一定要用IPhone5S及以上的...

  • iOS ARM64汇编02-- 寄存器

    在ARM64汇编中有多种不同的寄存器,比较常用的寄存器如下: 通用寄存器 64bit的:x0 ~ x28 32bi...

网友评论

      本文标题:arm64汇编篇-13编译器优化及寄存器与多线程问题

      本文链接:https://www.haomeiwen.com/subject/eexysftx.html