
汇编语言汇编语言就是最靠近机器语言01二进制表示的那种表示方法老古董了。高级语言就是现在的语法。ATT汇编→iOS模拟器ARM汇编→iOS真机设备8086汇编16bitx86汇编32bitx64汇编64bitx86和x64根据编译器的不同, 有二种书写格式Intel是Windows派系的 ATT是Unix派系的LLDB常见指令用来调试的读取寄存器的值 register read/格式 register read/x修改内存中的值 memory write 内存地址 数值 memory write 0x0000010 10修改寄存器的值 register write 寄存器名称 数值 register write rax 0读取内存中的值 x/数量-格式-字节大小 内存地址 x/3xw 0x0000010格式 x是16进制f是浮点d是十进制字节大小 b-byte 1字节 h-half word 2字节 w-word 4字节 g- giant word 8字节expression 表达式 可以简写expr 表达式 expression $rax expression $rax 1po 表达式print 表达式ро/x $raxpo (int)$raxthread step-over, next. n 单步运行把子函数当做整体一步执行源码级别thread step-in, step, s 单步运行遇到子函数会进入子函数源码级别thread step-inst-over, nexti, ni 单步运行把子函数当做整体一步执行汇编级别thread step-inst, stepi, si 单步运行遇到子函数会进入子函数汇编级别thread step-out, finish 直接执行完当前函数的所有代码返回到上一个函数遇到断点会卡住规律通过辨别内存地址的格式来判断这个内存是用来干嘛的内存地址格式为0x4bdc%rip一般是全局变量全局区数据段 内存地址格式为-0×78%rbp一般是局部变量栈空间 内存地址格式为0x10%rax一般是堆空间*栈是只能从最上面出的堆是可以随便拿的。学前须知编译流程API:源代码和库之间的接口ABI应用程序与操作系统之间的底层接口Swiftc这是牛逼的命令行工具可以用来编译swift源文件创建库模块管理性能优化等等。总的来说汇编了解一下就行。在终端输入以下↓可查找swiftc位置。它存放在Xcode内部。which swiftc基础语法写东西之前要先导入库(第一行import Foundation let a 3 let b 4 var c a b print(c) c 30 //c 就是c c 30的意思一句代码尾巴可以省略分号(;)但多句代码必须要用分号分开。command Shift Enter 运行整个Playground这个只有练习语法的时候才用不用管Shift Enter 运行截止到某一行代码注释单行注释//多行注释/(开始……/结束Markup语法/* 这是Markup语法 # 一级标题 ## 无序列表 - First - Second ## 有序列表 1. First 2. Second ## 笔记 This is... ## 图片  ![Logo]logo.pngLocal Image ## 链接 *[123]www.google.com **Bold** **Italic** */#一级标题##无序列表##有序列表基础语法详细var定义变量可以变的会变动的let定义常量常量在定义之后就不可以再更改标识符不能用数字开头不能有空白和乱七八糟的符号。Swift中的常见数据类型Struct结构体用于定义复合数据类型(注意不要搞错大小写,只有大写表示数据类型Bool 布尔值true or flaseInt整数Float单精度浮点数精度低只有6位、占用32位 Double 双精度浮点数精度高至少15位、占用64位Character字符String字符串Array数组Dictionary字典Set字典Decimal十进制引用类型class类似于结构体但有不同的特性(用于封存数据在其他地方用的Int16-16位有符号整数(符号就是正负号UInt16-16位无符号整数整数类型Int8, Int16, Int32, Int64, UInt8, UInt16在Swift中Int是和平台有关的整数类型。在32位平台上默认是Int32在64位平台上默认是Int64整数的最大值和最小值UInt8.max 就是UInt8的最大值Int16. min就是Int16的最小值一般情况下直接用Int就行字面量(Literal在给我介绍数据类型这是相对固定的true false→bool 布尔“”→string字符串0b10001→二进制0o21→八进制0x11→十六进制通常只有在表示颜色的时候才用12.1875的几种表示方法十进制12.1865、1.21875e1十六进制0xC.3p0[”age“]字典的意思就是冒号后面的东西归冒号前面的所有//字面量Literal let age3: String wohenbuhao let feiying: Bool false let yinlanglv999: Bool true print(yinlanglv999) print(UInt8.max) print(Int16.min) let string zheduima let bool true let doubleHexacecima11 0xFp2 print(doubleHexacecima11) let dictionary [age: 18, height: 168, weight: 120]//key就是age、height、weight冒号后面的值是value。字典的本质是通过key来访问value。这是无序的集合key必须是唯一的 print(dictionary) var array [1, 3, 5, 7, 9]//数组是有序的每个元素其实都有编号。var是定义变量let是定义常量 array[1] 25//可以通过这个方法来更改数组内的数或者字符串等等 print(array[2])//可以通过这个方法来访问数组中的数如访问数组中的第三个数0,1,2 print(array[1]) //字面量练习 let shuzu [xiadie, fengjin, changyeyue, xilian] print(shuzu[2])//打印长夜月 let baie: String Phanion print(baie) let silverwolfsp: Int 999 print(silverwolfsp) let zhengque: Bool true let cuowu: Bool false print(zhengque)数据类型转换//数据类型转换 //整数转换 let int1: UInt16 2_000 let int2: UInt8 1 let int3 int1 UInt16(int2) //同种数据类型才可以直接相加所以通过UInt16(int2)也即目标数据类型(需要转换的数)的方式来转换 //整数、浮点数转换 let int 3 //这个是整数要把他转换成浮点数才能相加. let double 0.14159 let pi Double(int) double print(pi) let double2 1.14159 let bushipi Int(double2) int //对于有小数部分的只截取整数的部分 let fanguolai Int(double) int //同上 print(fanguolai) print(bushipi) //转字符串再连起来 let agly 2 let sfer 0 let cp String(sfer) agly//把数值转换成字符串然后再连起来 print(cp)元组//元组(Tuple) let http404Error (404,Not Found) //元组的格式,元组里的数值可以是不同类型的, print(The status code is \\(http404Error.0))/* \\()这个是插值的用法尤其是在动态显示的时候会用到 \\(http404Error.0)表示取元组中的第一个数*/ print(The status code is \\(http404Error.0) \\(http404Error.1)) //如果要同时输入两个可以在中间加连接符连接符是自定义的 let(statusCode, statusMessage) http404Error //反过来为元组内的数值命名,这样就可以直接取到元组内的数值。不用像上面一样麻烦 print(The status code is \\(statusCode))//单独输出错误代码 let (justTheStatusCode, _) http404Error //_这个下划线表示我们不需要这个值在拆分元组的时候很好用 print(justTheStatusCode) let http200Status (statusCode: 200, description:OK) print(The status code is \\(http200Status.statusCode)) //其实后面改成(http200Status.1)也是可以的就是上面的表示方法