![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
彭老师的arm第一期笔记
彭老师的arm第一期笔记
看星星的派大星
这个作者很懒,什么都没留下…
展开
-
arm 指令移位操作(11)
向右移位后,左面填充 第31位的值 ,如果这个数是一个负数的话,那么就用1 来补充。最终移动的是 R2 的数值的低五个bit (共6个bit), 也就是移动了 31位。在移位的过程中,移动的个数也可以是 寄存器,但是只是寄存器的低5个bit有效。带扩展的循环右移: 可以使寄存器也可以是立即数。可以使寄存器也可以是 立即数。可以使寄存器也可以是 立即数。可以使寄存器也可以是 立即数。可以使寄存器也可以是 立即数。可以使寄存器也可以是立即数。LSL : 字母缩写。ASL : 字母缩写。ASR : 字母缩写。原创 2024-08-23 15:03:15 · 233 阅读 · 0 评论 -
mov 指令+ 立即数(10)
就是,一个16进制数, 1的个数不能超过8个, 超过8个了, 肯定是大于255的,如果是没有超过8个的,有可能通过移位的方式来 将 所有的1 都转移到 8个位之内。立即数的范围在 0-255 之前,这个指令的格式有关,立即数,只用8个位来表示,所以最大只有255.而二进制是 1000 0000 0000 0000 0000 0000 0000 0001。然后去掉前面最多的偶数个0 ,去掉后面最大偶数个0。开始移位,首先就两个1 , 有可能凑到 8位以内。mov 指令没什么好说的,接下来看 立即数。原创 2024-08-22 20:26:35 · 169 阅读 · 0 评论 -
协处理器+流水线 (9)
BL指令的第二个周期, L, 是指 将预取的指令+译码的指令全部丢弃,然后,从新预取之前计算的指令,然后,将返回的地址放到 r14 中。IRQ 在 第一个周期的时候,发生,那么 add 指令会执行完,但是 sub 指令就不译码了,开始译码中断指令,并且预取指令。BL指令的第三个周期,A, 的含义不知道,但是已经开始对跳转的指令进行译码了。再第四个周期的时候,开始对预取的指令译码, 但是这里的A,不知道是什么意思。BL 指令的 第一个周期,E , 是指计算出 需要跳转的位置。然后是 ldr 的指令。原创 2024-08-21 14:32:22 · 321 阅读 · 0 评论 -
arm 的寄存器概述(8)
r14(LR ), 这个是比较重要的,主要用于 跳转, 在执行bl 的指令时,会自动的 将下一条指令存放到R14 中,这样,返回时, 直接 ,将LR的值给到PC就可以了。带 三角形的是 这种模式下 独有的寄存器,也就是说,FIQ模式下与 SYstem/user 模式下,虽然都有r8 寄存器,但是不是一个东西。spsr : 备份的程序状态寄存器,当切换状态时,会自动把 cpsr 中的值,保存到spsr .代表的是当前的程序在什么模式下。最前面的 NZCV 为 条件位, 这个也是会用到的。原创 2024-08-19 18:05:22 · 241 阅读 · 0 评论 -
arm 的模式+异常(7)
用户模式: 不能访问硬件资源,但是可以通过系统调用来访问。管理模式: 这个跟系统调用有关,也跟软中断,swi 有关。4 undef , 流水线中执行 未知的指令时的异常。7 data, 这指的是 访问非法的内存单元的异常。6 prefech , 这表示无法预取指令的异常。一般中断+快速中断模式,这个可以访问硬件资源。monitor 模式,不解释,用不到,也不懂。5 swi , 这是软中断的异常。系统模式: 操作系统运行的模式。1 reset ,这也算异常。3 操作系统的8种模式。未定义模式,不解释。原创 2024-08-19 18:05:04 · 151 阅读 · 0 评论