qemu ARMv7-A 篇
文章平均质量分 77
ARMv7-A
tyustli
不抛弃,不放弃
展开
-
【ARM】-数据访问中止异常中断处理程序的返回
当数据访问中止异常中断发生时,处理器将 PC-4 的值保存到异常模式下的寄存器 LR_mode 中,这是 LR_mode 中的值 即为PC-4 ,即指向当前指令后的第二条指令。因此数据访问中止异常中断程序应该返回到该数据访问中止异常中断的指令处,而不是像前面两种情况下返回到发生中断的指令的下一条指令。4、数据访问中止异常中断处理完成之后,程序需要返回到有问题的数据指令处,即 instruction+0 处执行,所以将此时的 LR_mode 寄存器的值 -8 赋给 PC。原创 2023-07-03 12:29:49 · 468 阅读 · 0 评论 -
【ARM】-指令预取中止异常中断处理程序的返回
当指令预取中止异常中断发生时,处理器将 PC-4 的值保存到异常模式下的寄存器 LR_mode 中,这是 LR_mode 中的值 即为PC-4 ,即指向当前指令后的第一条指令。当异常中断处理程序中使用了数据栈时,可以通过下面的指令在异常中断处理程序时保存被中断程序的执行现场,在退出异常中断处理程序时恢复被中断程序的执行现场。,它指向当前指令的后 2 条指令(对于 ARM 系统来说它指向当前指令地址加 8 个字节的位置,对于 Thumb 指令来说,它指向当前指令加 4 个字节的位置)。原创 2023-07-03 12:29:01 · 789 阅读 · 1 评论 -
【ARM】-IRQ 和 FIQ 异常中断处理程序的返回
当 IRQ 和 FIQ 异常中断发生时,处理器将 PC-4 的值保存到异常模式下的寄存器 LR_mode 中,这时 LR_mode 中的值即为PC-4 ,即指向当前指令后的第二条指令。当 IRQ 和 FIQ 异常中断产生时,程序计数器 PC 的值已经更新,它指向当前指令后面第 3 条指令(对于 ARM 系统来说它指向当前指令地址加 12 个字节的位置,对于 Thumb 指令来说,它指向当前指令加 6 个字节的位置)。在上述指令中,reg_list 是异常中断处理程序中使用的寄存器列表。原创 2023-07-03 12:18:44 · 1511 阅读 · 0 评论 -
【ARM】-SWI 和未定义指令异常中断处理程序的返回
SWI 和未定义指令异常中断是由当前执行的指令自身产生的,当 SWI 和未定义指令异常中断产生时,程序计数器的 PC 的值还未更新,它指向当前指令后面第 2 条指令(对于 ARM 指令来说,它指向当前指令地址加 8 个字节的位置;这时 LR_mode 中的值即为PC-4 ,即指向当前指令的第一条指令。当异常中断处理程序中使用了数据栈时,可以通过下面的指令在异常中断处理程序时保存被中断程序的执行现场,在退出异常中断处理程序时恢复被中断程序的执行现场。C 语言中将软中断号打印出来。原创 2023-06-29 19:44:03 · 1156 阅读 · 0 评论 -
【ARM】-进入和退出异常中断的过程
链接寄存器(LR)用于在异常处理后存储适当的PC 地址,当程序返回时,LR 应该做出相应的调整。ARM 指令为三级流水线:取地,译码和执行。当出现异常时,ARM 内核自动执行以下操作。进入中断的时候 LR = PC -4。原创 2023-06-29 19:31:15 · 1243 阅读 · 0 评论 -
【ARM】-异常中断处理概述
在 ARM 体系中通常有以下 3 种方式控制程序的执行流程:原创 2023-06-29 19:25:35 · 282 阅读 · 0 评论 -
【ARM】-异常与中断
最常见的异步异常是外部中断,外部中断的发生是由外围设备驱动的,一方面外部中断的发生带有偶然性,另一方面中断请求到达处理器之时,处理器的程序指令流执行到具体的哪一条指令带有偶然性。指响应异常后的处理器状态无法精确反映为某一条指令的边界,即可能是某一条指令执行了一半然后被打断的结果,或者是其他模糊的状态。可能存在多个中断源同时向处理器发起请求的情形,因此需要对这些中断源进行仲裁,从而选择哪个中断源被优先处理,这种情况称为中断仲裁,可以给不同的中断分配优先级以便于仲裁,因此中断存在中断优先级的概念。原创 2023-06-29 19:14:17 · 1229 阅读 · 0 评论 -
【ARM】-C 语言运行前的设置
C 语言运行环境准备其实就是设置不同处理器模式下的 SP 指针,使其指向内存中的某块区域当然,实际使用中需要考虑 DDR 的初始化,MMU,cache 等,这里只是介绍了如何切到 C 语言的方法,具体的芯片外设需要考虑实际情况。原创 2023-05-14 18:31:24 · 204 阅读 · 1 评论 -
【ARM】——当前程序状态寄存器 CPSR
除了 usr 和 sys 模式外,每一种处理器模式下都有一个专用的物理寄存器,称为 SPSR(备份程序状态寄存器)。它包含了条件标志位、中断禁止位,当前处理器模式标志以及其他的一些控制和状态位。需要注意的是,Java状态位在现代ARM架构中已经不再被广泛使用,因为ARM处理器已经有更高效的方式来支持Java虚拟机。因此,在一些较新的ARM处理器中,J位可能没有具体的功能或被保留为未来的扩展使用。当处理器处于Java执行状态时,它会根据Java虚拟机的需求进行相应的优化和处理。通常其他指令不影响V位。原创 2023-07-18 07:41:26 · 1609 阅读 · 0 评论 -
【ARM】-处理器模式
ARMv7-a 处理器共有 9 种工作模式。原创 2023-05-13 11:36:44 · 1198 阅读 · 0 评论 -
【ARM】-栈帧
在 ARM 中,通常为满减栈(Full Descending FD), 也就是说,堆栈指针指向堆栈内存中最后一个填充的位置,并且随着每个新数据项被压入堆栈而递减。原创 2023-05-12 21:34:45 · 969 阅读 · 0 评论