[国嵌笔记][024][ARM汇编编程概述]】的更多相关文章

汇编程序用途 1.在bootloader与内核初始化时,还没有建立C语言运行环境,需要用到汇编程序 2.在对访问效率要求很高的情况下,需要用到汇编程序 ARM汇编分类 1.ARM标准汇编:适合于Windows在平台下使用 2.GUN汇编:适合于Linux在平台下使用 汇编程序框架 完整版: .section .data 数据段 <初始化数据> .section bss bss段 <未初始化数据> .section .text 代码段 .global _start 通过global申…
1. 汇编编程 为什么要学习汇编 1). Bootloader初始化 2). Linux kernel 3). 高效 2. ARM汇编分类 1. ARM标准汇编:ARM公司得汇编器适合在Windows平台下使用 2. GNU汇编:适用于GNU交叉编译工具链中的汇编器,适合Linux开发平台 3. 汇编程序框架 .section .data     <初始化的数据> .setction .bss     <未初始化的数据> .setction .text .gobal _start…
1.为什么需要学些汇编指令 2.ARM汇编指令分类 3.汇编程序框架 4.编程准备 +++++++++++++++++++++++++++++++++++ 1.为什么需要学些汇编指令 bootloader 跟 linux 内核,这两类软件中都要用到汇编程序. 在这两类软件中,初始化的代码都要用到汇编指令. 比如,系统启动,bootloader需要对CPU,协处理器等初始化,通常用汇编编写,应为汇编是效率最高的.并且此时还没有建立起C语言运行的环境,因为还没有建立起堆栈. 系统刚上电,硬件初始化的…
[ARM处理器工作模式] 处理器工作模式 1.User(urs):用户模式,linux应用程序运行在用户模式 2.FIQ(fiq):快速中断模式 3.IRQ(irq):中断模式 4.Supervisor(svc):系统保护模式,linux内核运行在系统保护模式 5.Abort(abt):异常模式 6.Undefined(und):未定义指令模式 7.System(sys):系统模式 [ARM寄存器详解] ARM寄存器(37个) 通用寄存器(31个) 1.未分组通用寄存器(R0-R7) 2.分组通…
ARM芯片:2440(arm9) 6410(arm11) 210(cortex-A8) ARM核:arm9(arm-v4) arm11(arm-v6) cortex-A8(arm-v7) 指令架构:arm-v4 arm-v6 arm-v7 在一个芯片中最重要的是ARM核 ARM核演变 ARM经典: ARM7.ARM9.ARM11 Cortex系列: 1.Cortex-M:应用于工控 2.Cortex-R:应用于实时 3.Cortex-A:应用于多媒体 ARM芯片对比 芯片 2440 6410 4…
协处理器作用 协处理器用于执行特定的处理任务,如数学协处理器可以执行控制数字处理,以减轻处理器的负担.ARM处理器最多可以支持16个协处理器,其中CP15是最重要的一个协处理器 CP15的作用 CP15是系统控制协处理器,通过额外的寄存器可以控制cache,MMU,系统时钟等功能 访问协处理器 1.CP15有16组寄存器,通过mcr和mrc指令来访问协处理器里的寄存器,从而达到访问协处理器的目的 2.通过datasheet中的CP15 register map summary可以查找到相关的寄存…
ARM机器码 1.汇编程序通过汇编器变成机器码,然后才能在ARM处理器上运行 2.ARM机器码是一个32位的数,被分成了多个段,每个段都有各自的含义 3.格式: cond:表示条件(4位) I:表示源操作数是寄存器还是立即数 opcode:表示指令类型(4位) S:表示是否影响cpsr寄存器 Rn:第一个源寄存器,有的指令中没有使用(4位) Rd:目的寄存器(4位) shift_operand:位移标志(4位)和第二个源寄存器或立即数(8位),所以mov指令中源操作数不能超过255 4.示例:…
2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flash启动时,SRAM(SteppingStone)地址为0x00000000 SDRAM(内存)地址为0x30000000 启动流程: 1.第一阶段 首先,处理器复制nand flash的BL1(前4KB)到Steppingstone中,执行BL1(bootloader第一部分).然后,复制BL2(b…
算术和逻辑指令 1.mov 格式:mov {条件}{s} <dest>, <op> 作用:把一个值从一个地方移动到另一个地方,<dest>必须是寄存器 示例: @mov指令范例   “@”表示注释 mov r1, #8 mov r2, r1 2.mvn 格式:mvn {条件}{s} <dest>, <op> 作用:把一个值取反后从一个地方移动到另一个地方,<dest>必须是寄存器 示例: @“0b”表示二进制,”0x”表示十六进制,什…
寻找方式 1.处理器根据指令中给出的信息来找到指令所需操作数的方式 2.立即数寻址 操作数本身在指令中给出,立即数前加”#”表示立即数寻址,操作数在指令中 3.寄存器寻址 利用寄存器中的数值作为操作数,操作数在寄存器中 4.寄存器间接寻址 利用存放在寄存器中的内存地址中的数值作为操作数,在寄存器加上[],操作数存放在内存中 5.基址变址寻址 利用寄存器中保存的基地址和立即数中保存的偏移,找到内存地址中的数值作为操作数,操作数保存在内存中 6.相对寻址 利用PC指针的当前值做为基地址和指令中地址标…