当前位置: 首页 > news >正文

网站收录大全销售推广

网站收录大全,销售推广,无锡app定制,最好看免费观看高清大全新员工前言 计算机语言分为机器语言、汇编语言和高级语言。 可以将高级语言分为两种#xff1a;编译语言和解释型语言#xff08;直译式语言#xff09;。 解释型语言#xff08;逐步进行解释执行#xff09; 解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态…前言 计算机语言分为机器语言、汇编语言和高级语言。 可以将高级语言分为两种编译语言和解释型语言直译式语言。 解释型语言逐步进行解释执行 解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态解释和执行即解释一条代码执行一条代码。 优点可移植好因为只需要各种系统有解释器便可运行不需要乱七八糟的系统库支持 缺点执行速度慢因为相比直接执行多了一个翻译过程。 典型语言phpjavascript 编译型语言一次性翻译 编译型语言的程序只要经过编译器编译之后每次运行程序都可以直接运行不需要再次“翻译”。 优点执行速度快 缺点可移植性差因为编译需要对操作系统的库做出链接所以程序运行时需要用到特定的系统库 典型语言objective-cswift 编译链接过程 预处理处理macro 宏如#define import 头文件替换及处理其他的预编译指令产生.i文件。都是以#号开头编译把预处理完的一系列文件进行一系列词法、语法、语义分析并且优化后生成相应的汇编代码产生.s文件。汇编汇编器将汇编代码生成机器指令输出目标文件产生.o文件。根据汇编指令和机器指令的对照表一一翻译就可以了链接在一个文件中可能会到其他文件因此还需要将编译生成的目标文件和系统提供的文件组合到一起这个过程就是链接。经过链接最后生成可执行文件。 经过编译和链接才会把写的代码转换成计算机能识别的二进制指令。 iOS编译是啥 编译其实是一个用代码解释代码的过程。在 Objective-C 和 Swift 的编译过程中用来解释代码的使用的是Low Level Virtual Machine 的编译器开发工具套件LLVM。简单的说LLVM 是一个项目其作用就是提供一个广泛的工具可以将任何高级语言的代码编译为任何架构的 CPU 都可以运行的机器代码。它将整个编译过程分类了三个模块前端、公用优化器、后端。 前端对目标语言代码进行语法分析语义分析生成中间代码。在这个过程中会进行类型检查如果发现错误或者警告会标注出来在哪一行。我们在开发的过程中其实 Xcode 也会使用前端工具对你的代码进行分析并实时的检查出来某些错误。前端是针对特定语言的如果需要一个新的语言被编译只需要再写一个针对新语言的前端模块即可。公用优化器将生成的中间文件进行优化去除冗余代码进行结构优化。后端后段将优化后的中间代码再次转换变成汇编语言并再次进行优化最后将各个文件代码转换为机器代码并链接。链接是指将不同代码文件编译后的不同机器代码文件合并成一个可执行文件。 clang 是 LLVM 的一个前端它的作用是针对 C 语言家族的语言进行编译像 c、c、Objective-C。而 Swift 则自己实现了一个前端来进行 Swift 编译优化器和后端依然是使用 LLVM 来完成。 Xcode 在编译 iOS 项目的时候使用的正是 LLVM。其实我们在编写代码以及调试的时候也在使用 LLVM 提供的功能例如代码高亮clang、实时代码检查clang、代码提示clang、debug 断点调试LLDB这些都是 LLVM 前端提供的功能。而对于后端来说我们接触到的就是关于 arm64、armv7、armv7s 这些 CPU 架构了。 我们的项目是一个 target一个编译目标它拥有自己的文件和编译规则在我们的项目中可以存在多个子项目这在编译的时候就导致了使用了 Cocoapods 或者拥有多个 target 的项目会先编译依赖库。 iOS编译干了啥 写入辅助文件将项目的文件结构对应表、将要执行的脚本、项目依赖库的文件结构对应表写成文件方便后面使用并且创建一个 .app 包后面编译后的文件都会被放入包中。运行预设脚本Cocoapods 会预设一些脚本当然你也可以自己预设一些脚本来运行。这些脚本都在 Build Phases 中可以看到。编译文件针对每一个文件进行编译生成可执行文件 Mach-O这过程涉及 LLVM 的完整流程包括前端、优化器、后端。链接文件将项目中的多个可执行文件合并成一个文件。拷贝资源文件将项目中的资源文件拷贝到目标包。编译 storyboard 文件storyboard 文件也是会被编译的。链接 storyboard 文件将编译后的 storyboard 文件链接成一个文件。编译 Asset 文件我们的图片如果使用 Assets.xcassets 来管理图片那么这些图片将会被编译成机器码除了 icon 和 launchImage。运行 Cocoapods 脚本将在编译项目之前已经编译好的依赖库和相关资源拷贝到包中。对包进行签名完成打包 在上述流程中2 - 9 步骤的数量和顺序并不固定这个过程可以在Build Phases中指定。Phases阶段、步骤这个选项Tab在Xcode中的意思就是编译步骤。其实在Xcode中我们不仅可以设定整个编译步骤和顺序还可以对编译规则Build Rules和具体步骤的参数Build Settings进行设定。 iOS整个编译链接过程 预处理Prepressing 处理macro 宏 import 头文件替换及处理其他的预编译指令产生.i文件都是以#号开头。规则如下 #define删除并展开对应宏定义。处理所有的条件预编译指令。如#if/#ifdef/#else/#endif。#include/#import包含的文件递归插入到此处。删除所有的注释//或/**/。添加行号和文件名标识编译调试会用到。 编译Compilation 这个过程就是把上面的main.i文件进行词法分析、语法分析、静态分析优化生成相应的汇编代码最终生成main.s文件。 词法分析把源代码的字符序列分割成一个个token关键字、表示符、字面量、特殊符号比如把标识符放到符号表里面。语法分析生成抽象语法树AST此时运算符号的优先级确定了有些符号具有多重含义也确定了比如*是乘号还是对指针取内容表达式不合法、括号不匹配等等都会报错。静态分析分析类型声明和匹配问题。比如整型和字符串相加肯定会报错。 中间语法生成CodeGen根据AST自上向下逐步翻译成LLVM IR并且对在编译期就可以确定的表达式进行优化比如代码里面的a13可以优化成a4。假如开启了bitcode目标代码生成与优化根据中间语法生成依赖具体机器的汇编语言并优化汇编语言。这个过程中假如有变量且定义在同一个编译单元里那么就给这个变量分配空间确定变量的地址。假如变量或者函数不定义在这个编译单元里面那就等到链接的时候才能确定地址。 汇编Assembly 将main.s文件编译成main.o文件。(也就是我们常说的目标文件) 这个过程就是把上面得到的main.s文件里面的汇编指令翻译成机器指令最终生成等到main.o 链接Linking 这个过程就是将main.o编译成对应的Mach-O文件也就是我们常说的可执行文件。链接的本质就是把一个或多个目标文件和需要的库静态库/动态库如果需要的话组合成一个文件Mach-O可执行文件。
http://www.zqtcl.cn/news/529926/

相关文章:

  • 许昌市做网站公司汉狮价格装修案例图片 效果图
  • 设计主题网站化肥厂的网站摸板
  • 做羊水亲子鉴定网站网络推广是啥
  • 怎样解析网站域名用哪个网站做首页比较好
  • 设计网站页面设计wordpress样式错乱
  • 静态网页模板免费网站wordpress悬浮按钮
  • 怎么制作学校网站大淘客网站代码
  • 如何做好一个网站wordpress 修改邮箱设置
  • 网站项目方案生态建设研究所网站
  • 用织梦做视频网站wordpress文章不能分段
  • 彩票网站开发. 极云邮箱类网站模板
  • 网站代运营协议网站 文件服务器
  • 专业网站设计公司有哪些绿色营销案例100例
  • 网站建设买了域名山东省作风建设网站
  • 留学中介网站建设方案设计企业品牌商标
  • 会展相关网站建设情况seo的基本步骤是什么
  • 太原网站建设鸣蝉公司免费网页制作网站建设
  • 中山专业网站建设网站开发基础知识简述
  • 包头索易网站建设中国建设银行网站余额查询
  • 哪家公司做网站开发做得比较好佛山商城网站制作
  • 可以做淘宝推广的网站优化网页设计是什么
  • 邢台手机网站制作优秀网站建设哪家好
  • 网站托管运营所需资料长春专用网站建设
  • 北京网站建设招聘江苏住房和城乡建设局网站
  • 如何让订阅号菜单做微网站哪家网站做的好
  • 北京建站方案北京seo主管
  • 网站平台建设费用的会计核算凡科教育小程序怎么样
  • 网站配置文件在哪里sns网站需求
  • 网站运营优化建议英国网站域名
  • 网站开发洲际企业网站模板论坛