摘要: 一、函数的类型1、 叶子函数 C代码 test的汇编代码 2、⾮叶子函数函数里面会调用其他的函数func的汇编代码 阅读全文
posted @ 2019-04-19 20:25 迷心迷 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 一、iOS汇编1、真机:arm64汇编寄存器指令 堆栈2、模拟器:x86汇编二、lldb 三、生成汇编文件 四、寄存器1、 通⽤寄存器64bit的:x0 ~ x2832bit的:w0 ~ w28(属于x0 ~ x28的低32bit)x0 ~ x7通常拿来存放函数的参数,更多的参数使用堆栈来传递 x0 阅读全文
posted @ 2019-04-19 20:23 迷心迷 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 一、跳转指令 B: 跳转指令 BL: 带返回的跳转指令 BLX: 带返回和状态切换的跳转指令 BX: 带状态切换的跳转指令 二、数据处理指令 1、MOV:数据传送指令 MOV{条件}{S} 目的寄存器,源寄存器 MOV指令可完成从另一个寄存器、被移位的寄存器或将将一个立即数加载到目的寄存器。其中S选 阅读全文
posted @ 2018-11-20 14:03 迷心迷 阅读(1488) 评论(0) 推荐(0) 编辑
摘要: 一、ARM介绍 1) arm汇编中,程序下一步执行哪一条指令,是根据程序计数器(PC)的值来决定。 类比于8086的CS:IP的功能。 2) 8086属于CISC(复杂指令集),每条指令长度不等,arm是RISC(精简指令集),所有指令等长(例如都为32位)。 3)ARM指令代码一般分为5个区域: 阅读全文
posted @ 2018-11-12 19:07 迷心迷 阅读(1267) 评论(0) 推荐(0) 编辑
摘要: 应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。 安装程序 阅读全文
posted @ 2018-11-12 16:43 迷心迷 阅读(208) 评论(0) 推荐(0) 编辑
摘要: int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。 CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。 1)取中断类型码n; 2)标志寄存器入栈 ,IF=0, TF=0; 3) CS,IP入栈; 4)(IP)=(n*4), (CS)=(n*4+2)。 i 阅读全文
posted @ 2018-11-12 16:23 迷心迷 阅读(736) 评论(0) 推荐(0) 编辑
摘要: 基本上,CPU在执行完一条指令之后,如果检测到标志寄存器的TF位为1,则产生单步中断,引发中断过程。单步中断的类型码为1,则它所引发的中断过程如下: 1) 取得中断类型码1; 2)标志寄存器入栈,TF、IF设置为0 3)CS、IP入栈 4)(IP)=(1*4), (CS)=(1*4+2)。 Debu 阅读全文
posted @ 2018-11-12 15:57 迷心迷 阅读(1152) 评论(0) 推荐(0) 编辑
摘要: 中断处理程序的编写方法和子程序的比较相似,下面是常规的步骤: 1)保存用到的寄存器 2)处理中断 3)恢复用到的寄存器 4)用iret指令返回。 编程处理0号中断(除法错误) 1)编写可以显示"overflow!"的中断处理程序: do0; 2)将do0送入内存0000:2000处; 3)将do0的 阅读全文
posted @ 2018-11-12 15:21 迷心迷 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 我们可以用中断类型码,在中断向量表中找到中断处理程序的入口。找到这个入口地址的最终目的是用它设置CS和IP,使CPU执行中断处理程序。用中断类型码找到中断向量,并用它来设置CS和IP,这个工作是由CPU的硬件自动完成的。CPU硬件完成这个工作的过程被称为中断过程。 下面是8086CPU在收到中断信息 阅读全文
posted @ 2018-11-12 15:13 迷心迷 阅读(632) 评论(0) 推荐(0) 编辑
摘要: 任何一种通用的CPU,例如8086,都具有一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,我们可以称为:中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信 阅读全文
posted @ 2018-11-12 14:44 迷心迷 阅读(299) 评论(0) 推荐(0) 编辑