一、程序的本质
软件/程序的执行过程:
二、寄存器与内存
CPU将内存中的数据存储到寄存器中,然后在对寄存器中的数据进行计算
上图所示:
三、编程语言的发展
汇编语言与机器语言一一对应,每一条机器指令都有与之对应的汇编指令
汇编语言可以通过编译得到机器语言,机器语言可以通过反编译得到汇编语言
高级语言可以通过编译得到汇编/机器语言,但是汇编.机器语言几乎不可能还原高级语言
四、汇编语言的种类
汇编语言严重依赖硬件环境,iOS主要的汇编语言是
①AT&T汇编 ——> iOS模拟器
②ARM汇编 ——> iOS真机设备
五、寄存器
①有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等常用语存放函数参数
rsp、rbp用于栈操作
rip作为指令指针
【注意】
①rip存储着CPU下一条执行的指令的地址
②一旦CPU读取一条指令,rip会自动指向下一条指令
六、常见的汇编指令 AT&T汇编
七、LLDB常用指令
八、内存命名规律
内存地址格式:0xbdc(%rip) 全局变量 全局区
内存地址格式:-0x78(%rbp) 局部变量 栈空间
内存地址格式:-0x10(%rax) 堆空间
Swift学习日记7(汇编)