ARM体系结构
文章平均质量分 90
fanxiaoyu321
天道酬勤
展开
-
GCC链接脚本语法
在操作系统之上编程时我们是不需要关注这部分内容的,因为按照ld默认的行为链接即可,然后所有的事情都交给作系统处理完成。但是在嵌入式开发过程中,特别是移植Bootloader和内核的时候,链接脚本就显得格外的重要了。因为这个时候程序的运行环境都是裸机环境,没有任何的内存管理功能,代码操作的是物理地址,所以就要求我们对程序二进制镜像在链接和运行时的内存布局进行理安排。下面介绍的链接脚本就是干这件事的。详细的链接脚本语法可以参考官方文档《Using as》。链接脚本格式首先,链接脚本就是文本文件。其中原创 2022-04-17 19:49:54 · 3593 阅读 · 3 评论 -
GCC内嵌汇编
这篇笔记录的内容来自GCC手册中关于内嵌汇编的说明。通过asm关键字,可以实现在C/C++代码中插入汇编代码,GCC提供了两种格式的内嵌汇编代码:1)基本asm汇编(无操作数);2)扩展asm汇编(有一个或多个操作数)。推荐使用扩展asm汇编,但也有些场景是必须使用基本asm汇编来完成。基本asm汇编基本asm汇编语法如下:asm [ volatile ] ( AssemblerInstructions )asm是GNU扩展的关键字,如果可以使用__asm__(对编译选项有要求),那么原创 2022-04-17 19:32:54 · 3311 阅读 · 0 评论 -
ARM的异常处理机制
目录异常种类异常中断向量表异常处理进入部分复位异常未定义指令异常SWI软件中断指令预取中止异常中断数据访问中止异常中断IRQ异常FIQ异常离开部分SWI软件中断未定义指令异常中断IRQ和FIR异常中断指令预取中止异常数据访问中止异常异常种类ARM共有如下7种异常模式:复位(RESET):当处理器复位引脚有效时,系统产生复位异常中断。复位异常中断通常在系统加电和系统复位时发生,直接跳转到复位中断向量处执行称为软复位。 未定义的指原创 2022-04-01 21:12:28 · 5226 阅读 · 1 评论 -
ARM指令集之伪指令
文章目录原创 2020-12-20 14:10:29 · 1469 阅读 · 1 评论 -
ARM指令集之杂类指令
文章目录状态寄存器访问指令MRSMSR信号量操作指令SWP字交换指令SWPB字节交换指令异常中断产生指令SWI软中断指令BKPT断点中断指令这篇笔记记录了如下几类ARM指令:状态寄存器访问指令;信号量操作指令;异常中断产生指令;状态寄存器访问指令ARM提供了两条指令用于在状态寄存器和通用寄存器直接交换数据。MRS:Move Register <-- State,将状态寄存器的值传送到通用寄存器中;MSR:Move State <-- Register,将通用寄存器的值传送的原创 2020-12-19 23:50:58 · 901 阅读 · 2 评论 -
ARM指令集之批量Load/Store指令
原创 2020-12-16 22:30:44 · 2660 阅读 · 0 评论 -
ARM指令集之Load/Store访存指令(二)
文章目录寻址方式LDRH(半字数据读取指令)STRH(半字数据写入指令)LDRSB(有符号字节数据读取指令)LDRSH(有符号半字数据读取指令)这篇笔记记录了第二类Load/Store指令,即操作数为16位半字和有符号字节数据的Load/Store指令。助记符说明LDRH半字数据读取指令STRH半字数据写入指令LDRSB有符号字节数据读取指令LDRSH有符号半字数据读取指令寻址方式这类指令拥有一致的寻址方式,具体介绍见这里。语法说明原创 2020-12-16 21:54:32 · 1302 阅读 · 0 评论 -
ARM指令集之Load/Store指令寻址方式(二)
文章目录原创 2020-12-16 21:31:36 · 629 阅读 · 0 评论 -
ARM指令集之Load/Store访存指令(一)
文章目录原创 2020-12-15 23:44:38 · 4405 阅读 · 0 评论 -
ARM指令集之Load/Store指令寻址方式(一)
文章目录语法格式寻址方式立即数偏移量寻址寄存器偏移量寻址寄存器移位偏移量寻址这篇笔记记录的是操作32位子类型和无符号字节数据的Load/Store指令所使用的寻址方式。所有类型的Load/Store指令的寻址方式都是由基址加偏移量组成的,基址用任意的通用寄存器指定,偏移量的指定方式有如下三种:立即数;寄存器;寄存器和一个移位常数;寻址方式的计算又有如下三种方式:偏移量方法;事先更新方法;事后更新方法;.注意:上述内容适用于所有类型的Load/Store指令。语法格式操作32位原创 2020-12-10 00:05:38 · 2440 阅读 · 0 评论 -
ARM指令集之乘法指令
文章目录原创 2020-12-06 23:55:46 · 3006 阅读 · 0 评论 -
ARM指令集之数据处理类指令
文章目录数据处理指令1. MOV传送指令2. MVN传送指令3. ADD加法指令4. ADC带进位加法指令5. SUB减法指令6. SBC带位减法指令7. RSB逆向减法指令8. RSC带位逆向减法指令数据处理指令常见的数据处理指令如下表所示,它们支持相同的寻址方式,详情可见笔记。助记符说明实现逻辑MOV数据传送Rd = Rn(Rn可能需要运算)MVN数据取反传送Rd = ~Rn(Rn可能需要运算)ADD加Rd = Rn + op2ADC带进位加原创 2020-11-26 00:08:31 · 996 阅读 · 0 评论 -
ARM指令集之数据处理指令寻址方式
文章目录数据处理指令寻址方式1. 立即数寻址2. 寄存器寻址3. 寄存器逻辑左移立即数寻址4. 寄存器逻辑左移寄存器寻址5. 寄存器逻辑右移立即数寻址6. 寄存器逻辑右移寄存器寻址7. 寄存器算数右移立即数寻址8. 寄存器算数右移寄存器寻址9. 寄存器循环右移立即数寻址10. 寄存器循环右移寄存器寻址11. 寄存器扩展循环右移寻址所谓的寻址方式,是指当一个指令中的操作数涉及内存访问时,那么指令已什么样的方式来确定内存的地址。ARM的寻址方式分好几类,这篇笔记记录了数据处理类指令的寻址方式。数据处理指令原创 2020-11-19 02:13:05 · 1377 阅读 · 0 评论 -
ARM指令集之跳转指令
文章目录跳转指令B指令和BL指令长跳转指令ARM中有两种程序跳转方式:跳转指令;向PC写入目标地址值;跳转指令通过跳转指令,可以实现从当前指令向前或者向后32MB的地址空间跳转(一般来讲也足够了,基本上没有需要使用汇编语言写超过32MB程序的场景),总共有4种跳转指令:B:跳转指令;BL:带返回的跳转指令;BLX:带返回和状态切换的跳转指令;BX:带状态切换的跳转指令;带X的指令中的状态切换指的ARM状态和Thumb状态的切换,我们不关注,所以这些指令暂不介绍。B指令和BL指令原创 2020-11-18 00:36:15 · 3714 阅读 · 0 评论 -
ARM处理器模式与寄存器
文章目录模式寄存器通用寄存器状态寄存器指令集指令条件码模式不同的体系结构所定义的模式是有差异的,不过它们是向后兼容的,下面是ARM920T CPU所支持的处理器模式。模式名称代码描述User(USR)10000大部分应用程序运行时所处的用户模式,也叫非特权模式FIQ10001FIQ异常中断IRQ10010IRQ异常中断Supervisor(SVC)10011管理调用指令被执行或者reset的时候Monitor(MON)10110安全扩展原创 2020-11-15 21:52:15 · 802 阅读 · 0 评论