美文网首页
结合汇编谈谈xcode编译器优化

结合汇编谈谈xcode编译器优化

作者: stockholder | 来源:发表于2017-07-27 23:01 被阅读0次

1.众所周知,OC是一门RunTime语言,比如说我们在.h文件中声明一个方法,但不在.m文件实现,编译的时候是可以通过的,运行的时候才会报错,但如果直接声明了一个c语言的函数没有实现,编译就会直接报错。其实xcode在这两种情况下的函数调用是做了不一样的优化的。请看下面代码;

上面的代码只是很简单的写了一个函数test()以及在ViewController里面写了一个相同函数体的test1(),可以看一下在下xcode里面运行后的两种调用方式的反汇编代码。

# Release模式下的情况

*  调用ViewController消息test1()的反汇编代码

可以看到callq  *%rbx 就是test1()的调用,从lldb里面进入该函数(命令是s),可以看到test1()里面的过程

*   调用c函数test()的反汇编代码

可以看到,反汇编代码里没有test()的调用,而是直接 movl  $0x2, %esi,这时候编译器会认为函数体test()里面的内容过于简单,直接就不调用了,直接优化,将结果2返回。

上面的两种情况的对比:C函数在编译的时候就已经确定了,而OC方法只有在运行时才确定,所以在编译的时候C函数可以被优化,OC方法不行。

相关文章

  • 结合汇编谈谈xcode编译器优化

    1.众所周知,OC是一门RunTime语言,比如说我们在.h文件中声明一个方法,但不在.m文件实现,编译的时候是可...

  • iOS逆向之OC反汇编(上)

    本文主要讲解编译器的优化以及指针的汇编 编译器优化 设置 可在项目的BuildSetting->Optimizat...

  • xcode 常见设置

    xcode Built Setting里的参数1、Optimization Level 编译器优化程度 None:...

  • 04-汇编基础(终)

    前言 本篇文章是汇编这一部分的最终章了,主要讲解4部分内容: 编译器优化 指针 OC反汇编 Block反汇编 一、...

  • 汇编分析&编译器优化

    汇编的种类 8086汇编(8086处理器是16bit的CPU) Win32汇编 Win64汇编 ARM汇编(嵌入式...

  • 编译器优化

    首先我们先看以下代码: 编译器优化优化的是什么呢,优化的是底层代码执行逻辑,使项目执行更加高效。汇编是最接近底层的...

  • iOS Xcode 的汇编模式切换

    iOS Xcode 的汇编模式切换 iOS Xcode 的汇编模式切换

  • 汇编语言

    1.一般的编译器,是先将高级语言转换成汇编语言(中间代码),然后在汇编的基础上优化生成OBJ目标代码,最后Link...

  • 6、汇编和可执行文件(需要重新看视频整理)

    汇编≈机器码 编译器将源代码转换成汇编码(机器码) 代码经过编译器编译形成与之对应的汇编代码,而这些汇编代码不是可...

  • 19_编译过程简介

    关键词:初识编译器、预处理、编译、汇编 1. 初识编译器 广义上的编译器由:预处理器、编译器、汇编器、链接器组成。...

网友评论

      本文标题:结合汇编谈谈xcode编译器优化

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