From 293e043e30bde542f36aeda2bf4b07e5c6062075 Mon Sep 17 00:00:00 2001 From: jiulinxiri Date: Mon, 13 Dec 2021 22:50:09 +0800 Subject: [PATCH] 444 --- README.md | 43 ++++++++++++++++++ .../Sources/README.md | 43 ------------------ .../Contents.swift | 0 .../UserInterfaceState.xcuserstate | Bin 29704 -> 33309 bytes 4 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 README.md delete mode 100644 SwiftStudy.playground/Pages/07 汇编分析枚举.xcplaygroundpage/Sources/README.md rename SwiftStudy.playground/Pages/{07 汇编分析枚举.xcplaygroundpage => Untitled Page.xcplaygroundpage}/Contents.swift (100%) diff --git a/README.md b/README.md new file mode 100644 index 0000000..c768304 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +//## 汇编语言 +//iOS使用的是AT&T的汇编语言 +//### 常见的寄存器 +//16个常用的寄存器 +//* rax、rbx、rcx 、rdx、rsi、rdi、rbp、rsp +//* r8、r9、r10、r11、r12、r13、r14、r15 +// +//寄存器的具体用途 +//* rax、rdx常作为函数的返回值使用 +//* rdi、rsi、rdx、rcx、r8、r9等寄存器常用于函数的参数 +//* rbp、rsp用于栈操作 +//* rip作为指令指针 +// * 存储着CPU下一条要执行的指令的地址 +// * 一旦CPU读取一条指令,rip会自动指向下一条指令 +// +//```java +//r开头: 64bit, 8字节 +//e开头: 32bit, 4字节 +//ax bx cx: 16bit, 2字节 +//ah al: 8bit,1字节 +//bh bl +//``` +// +//### 常见的汇编指令 +// +//| 项目名称 | AT&T | Intel | 说明 | +//|:-----------:|:---------------------------------------------------:|:----------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +//| 寄存器名称 | %rax | rax| | +//| 操作数顺序 | mvq %rax, %rdx | mv rdx, rax | 将rax的值赋给rdx| +//| 常数\立即数 | movq $3, %rax
movq $0x10, %rax | mov rax, 3
mov rax, 0x10 | 将3赋值给rax
将0x10赋值给rax| +//| 内存赋值 | movq $0xa, 0x1ff7(%rip) | mov qword ptr [rip+0x1ff7], 0xa | 将0xa赋值给地址为rip + 0x1ff7的内存空间 | +//| 取内存地址 | leaq -0x18(%rbp), %rax | leaq -0x18(%rbp), %rax | 将rbp – 0x18这个地址值赋值给rax | +//| jmp指令 | jmp *%rdx
jmp 0x4001002
jmp *(%rax) | jmp rdx
jmp 0x4001002
jmp [rax] | call和jmp写法类似 | +//| 操作数长度 | movl %eax, %edx
movb $0x10, %al
eaw 0x10(%dx),%ax | mov edx, eax
mov al, 0x10
lea ax, [dx + 0x10] | b = byte (8-bit)
s = short (16-bit integer or 32-bit floating point)
w = word (16-bit)
l = long (32-bit integer or 64-bit floating point)
q = quad (64 bit)
t = ten bytes (80-bit floating point) | +// +// +//### lldb常见的命令 +//* thread step-over、next、n: 单步运⾏行行,把子函数当做整体⼀一步执⾏行行(源码级别) +//* thread step-in、step、s: 单步运⾏行行,遇到子函数会进⼊入子函数(源码级别) +//* thread step-inst-over、nexti、ni: 单步运⾏行行,把子函数当做整体⼀一步执⾏行行(汇编级别) +//* thread step-inst、stepi、si: 单步运⾏行行,遇到子函数会进⼊入子函数(汇编级别) +//* thread step-out、finish: 直接执⾏行行完当前函数的所有代码,返回到上一个函数(遇到断点会卡住) +// diff --git a/SwiftStudy.playground/Pages/07 汇编分析枚举.xcplaygroundpage/Sources/README.md b/SwiftStudy.playground/Pages/07 汇编分析枚举.xcplaygroundpage/Sources/README.md deleted file mode 100644 index c38cf65..0000000 --- a/SwiftStudy.playground/Pages/07 汇编分析枚举.xcplaygroundpage/Sources/README.md +++ /dev/null @@ -1,43 +0,0 @@ -## 汇编语言 -iOS使用的是AT&T的汇编语言 -### 常见的寄存器 -16个常用的寄存器 -* rax、rbx、rcx 、rdx、rsi、rdi、rbp、rsp -* r8、r9、r10、r11、r12、r13、r14、r15 - -寄存器的具体用途 -* rax、rdx常作为函数的返回值使用 -* rdi、rsi、rdx、rcx、r8、r9等寄存器常用于函数的参数 -* rbp、rsp用于栈操作 -* rip作为指令指针 - * 存储着CPU下一条要执行的指令的地址 - * 一旦CPU读取一条指令,rip会自动指向下一条指令 - -```java -r开头: 64bit, 8字节 -e开头: 32bit, 4字节 -ax bx cx: 16bit, 2字节 -ah al: 8bit,1字节 -bh bl -``` - -### 常见的汇编指令 - -| 项目名称 | AT&T | Intel | 说明 | -|:-----------:|:---------------------------------------------------:|:----------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| 寄存器名称 | %rax | rax| | -| 操作数顺序 | mvq %rax, %rdx | mv rdx, rax | 将rax的值赋给rdx| -| 常数\立即数 | movq $3, %rax
movq $0x10, %rax | mov rax, 3
mov rax, 0x10 | 将3赋值给rax
将0x10赋值给rax| -| 内存赋值 | movq $0xa, 0x1ff7(%rip) | mov qword ptr [rip+0x1ff7], 0xa | 将0xa赋值给地址为rip + 0x1ff7的内存空间 | -| 取内存地址 | leaq -0x18(%rbp), %rax | leaq -0x18(%rbp), %rax | 将rbp – 0x18这个地址值赋值给rax | -| jmp指令 | jmp *%rdx
jmp 0x4001002
jmp *(%rax) | jmp rdx
jmp 0x4001002
jmp [rax] | call和jmp写法类似 | -| 操作数长度 | movl %eax, %edx
movb $0x10, %al
eaw 0x10(%dx),%ax | mov edx, eax
mov al, 0x10
lea ax, [dx + 0x10] | b = byte (8-bit)
s = short (16-bit integer or 32-bit floating point)
w = word (16-bit)
l = long (32-bit integer or 64-bit floating point)
q = quad (64 bit)
t = ten bytes (80-bit floating point) | - - -### lldb常见的命令 -* thread step-over、next、n: 单步运⾏行行,把子函数当做整体⼀一步执⾏行行(源码级别) -* thread step-in、step、s: 单步运⾏行行,遇到子函数会进⼊入子函数(源码级别) -* thread step-inst-over、nexti、ni: 单步运⾏行行,把子函数当做整体⼀一步执⾏行行(汇编级别) -* thread step-inst、stepi、si: 单步运⾏行行,遇到子函数会进⼊入子函数(汇编级别) -* thread step-out、finish: 直接执⾏行行完当前函数的所有代码,返回到上一个函数(遇到断点会卡住) - diff --git a/SwiftStudy.playground/Pages/07 汇编分析枚举.xcplaygroundpage/Contents.swift b/SwiftStudy.playground/Pages/Untitled Page.xcplaygroundpage/Contents.swift similarity index 100% rename from SwiftStudy.playground/Pages/07 汇编分析枚举.xcplaygroundpage/Contents.swift rename to SwiftStudy.playground/Pages/Untitled Page.xcplaygroundpage/Contents.swift diff --git a/SwiftStudy.playground/playground.xcworkspace/xcuserdata/jiulinxiri.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftStudy.playground/playground.xcworkspace/xcuserdata/jiulinxiri.xcuserdatad/UserInterfaceState.xcuserstate index aaa203e879db59b78581acb3ec66b0a0642268f9..86d4572b61259ae6c019cacdeda451908f4e7ca1 100644 GIT binary patch literal 33309 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⪙NNxUxAFV< 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