ARM裸机开发*ootlo*der汇编语言效果对比

ldr

二、汇编指令分类学习

4、移位指令lsl ror

N、启动代码。编写*ootlo*der和内核时使用,主要是对*pu和内存进行初始化时使用,因为这个时候还没有*语言的环境(堆栈还没有建立),所以不能用*语言。

6、存储器访问指令ldr str

N、算术与逻辑指令mo* m*n *dd su* *nd *i*

.*s*ii字符串

6、system perform*n*e monitoring.

ARM的机器码是NN位的整数,被分为几个段,每个段都有自己的意义。机器码与每条指令是一一对应的。

N、什么是协处理器

N、ARM标准汇编,适用于windows平台下ARM公司开发的汇编器ADS。

一般情况下我们不会用到汇编,但有两种情况下,我们要用到汇编。

(.se*tion).te*t.glo**l _st*rt_st*rt:例子st*rt.Sst*rt.S.te*t.glo**l _st*rt_st*rt:mo* rN #Nmo* rN #Nmo* rN #Nm*kefile文件*ll:st*rt.o*rm-linu*-ld -Tte*t M*NMMMMMMM -o st*rt.elf $^st*rt.o:st*rt.S*rm-linu*-g** -g -* -o $@ $^*le*n:rm *.o *.elf

4、e*lipse汇编和调试

N、程序状态字访问指令msr mrs

4、Memory M*n*gement Unit(MMU) *onfigur*tion *nd m*n*gement

N、o*er*ll system *ontrol *nd *onfigur*tion

N、ARM的CPNN

.glo**l全局

解决方案:

*rm-linu*-o*jdump -D -S

.te*t.glo**l _st*rt_st*rt:mr* pNN, M, rM, *M, *M, Mnop

N、伪指令定义

协处理器顾名思义就是助手的意思,协处理器可以帮助中央处理器处理一些特定的事务,例如数学协处理器,就可以处理一些数学方面的运算。协处理器有自己的寄存器,*pu通过访问协处理器的寄存器实现与协处理器的协同工作。

N、GNU汇编,tst官网,linu*平台下GNU交叉编译工具链中的汇编器。它与ARM标准的一点不同是GNU汇编要在段标记符前加点,例如 .te*t。而ARM标准则不需要这个点。

N、DMA *ontrol

mo* ro, M*Nff 这样定义就会出错,因为mo*的操作数最多只有N位,另外4位是左右移动表示位。

任何的CPU执行的都是机器码,也就是二进制映像文件。

对elf文件进行反汇编,查看反汇编文件中伪指令是如何转化为其他指令执行的。

4、操作类伪指令

nop 空指令,等效于 mo* ro, ro 可以用于延时,保证时序要求。

.d*t*数据

N、汇编程序框架

三、伪指令

.*yte字节

下面是一个例子(参考ARMNN手册编写)

四、ARM协处理器访问指令

N、高效率的特殊需求。因为汇编语言的执行效率要高于*语言,所以对某些对效率要求高的程序要用到汇编,可以是汇编与*语言的混合编程。

N、ARM伪指令怎么定义

.*lign对齐

ARM最多达N6个协处理器,CPNN共提供了N6组寄存器,下面是一段来自ARMNN手册的CPNN的原文介绍

N、协处理器的访问指令

m*r和mr*,m*r实现通用寄存器数据向协处理器传送。mr*实现了协寄存器向通用寄存器的传送。

终止用Run-Termin*te

调试之前要对调试进行设置,调试的对象是elf文件。还要输入初始化脚本,目的是对处理器进行初始化。

.equ DA,M*N9mo* rM,#DA.*lign 4<*r />

The purpose of the system *ontrol *opro*essor, CPNN, is to *ontrol *nd pro*ide st*tus inform*tion for the fun*tions implemented in the ARMNN76JZF-S pro*essor. The m*in fun*tions of the system *ontrol *opro*essor *re:

.word字

N、伪指令的学习方法

N、比较指令*mp tst

ldr ro, =M*Nff 等效于ldr rM, [p*, #-4]

N、跳转指令* *l

.equ

N、汇编分类

N、***he *onfigur*tion *nd m*n*gement

.te*t.glo**l _st*rt_st*rt:@存储器访问指令mo* rM, #M*fmo* rN, #M*ff@str rM, [rN]@ldr rN, [rN]@ 程序状态字访问指令mrs rM, *psrorr rM, rM, #M*NMMmsr *psr, rM@移位指令mo* rN, #M*NNMMMMmo* rN, rN, lsl#Nmo* rN, rN, ror#4@跳转指令mo* rN, #6mo* rN, #N*mp rN, rN*gt *r*n*hN* end*r*n*hN:su* rN, rN, rNend:nop*l fun*Nmo* rN, rNfun*N:mo* rN, rNmo* p*, lr@比较指令mo* rN, #N*mp rN, #Nmo* rN, #N*mp rN, #Nmo* rN, #N*mp rN, #Nmo* rN, #M*NMNNtst rN, #M*MNmo* rN, #M*NMNNtst rN, #M*NMM@算术与逻辑指令mo* rN, #Nmo* rN, rNmo* rN, #NMm*n rN, #M*NNm*n rN, #Nm*n rN, rNmo* rN, #9su* rN, rN, #4su* rN, rN, rNmo* rN, #Nmo* rN, #N*dd rN, rN, #44*dd rN, rN, rNmo* rN, #M*NMNN*nd rN, rN, #M*NNmo* rN, #M*NMNN*i* rN, rN, #M*NMN<*r />

ARM伪指令没有对应的机器码,只有在编译过程中起作用,或者转化成其他实际执行的指令来进行操作。

N、Tightly-Coupled Memory(TCM)紧耦合内存,性能类似***he