网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > Boot loader > 文章  
ARM的嵌入式Linux移植体验之BootLoader
文章来源: 天极开发 文章作者: 宋宝华 发布时间: 2006-08-12   字体: [ ]  
 
  2.ARM汇编

  ARM本身属于RISC指令系统,指令条数就很少,而其编程又以C等高级语言为主,我们仅需要在Bootloader的第一阶段用到少量汇编指令:

  (1)+-运算

ADD r0, r1, r2
―― r0 := r1 + r2
SUB r0, r1, r2
―― r0 := r1 - r2

  其中的第二个操作数可以是一个立即数:

ADD r3, r3, #1
―― r3 := r3 + 1

  第二个操作数还可以是位移操作后的结果:

ADD r3, r2, r1, LSL #3
―― r3 := r2 + 8.r1

  (2)位运算

AND r0, r1, r2
―― r0 := r1 and r2
ORR r0, r1, r2
―― r0 := r1 or r2
EOR r0, r1, r2
―― r0 := r1 xor r2
BIC r0, r1, r2
―― r0 := r1 and not r2

  (3)寄存器搬移

MOV r0, r2
―― r0 := r2
MVN r0, r2
―― r0 := not r2

  (4)比较

CMP r1, r2
―― set cc on r1 - r2
CMN r1, r2
―― set cc on r1 + r2
TST r1, r2
―― set cc on r1 and r2
TEQ r1, r2
―― set cc on r1 or r2

  这些指令影响CPSR寄存器中的 (N, Z, C, V) 位

  (5)内存操作

LDR r0, [r1]
―― r0 := mem [r1]
STR r0, [r1]
―― mem [r1] := r0
LDR r0, [r1, #4]
―― r0 := mem [r1+4]
LDR r0, [r1, #4] !
―― r0 := mem [r1+4] r1 := r1 + 4
LDR r0, [r1], #4
―― r0 := mem [r1] r1 := r1 +4
LDRB r0 , [r1]
―― r0 := mem8 [r1]
LDMIA r1, {r0, r2, r5}
―― r0 := mem [r1] r2 := mem [r1+4] r5 := mem [r1+8]

  {..} 可以包括r0~r15中的所有寄存器,若包括r15 (PC)将导致程序的跳转。
 
推荐文章
·嵌入式系统 Boot Loader 技术内
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·U-Boot简介
·U-BOOT的启动流程及移植
·嵌入式系统 Boot Loader
·Bootloader存在的必要性
·U-Boot在S3C2410上的移
·bootloader的加载和运行
相关文章
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·ARM的嵌入式Linux移植体
·Linux PDA和手持PC一览
·嵌入式Linux系统中的GUI
·嵌入式Linux操作系统启
·QTE/Qtopia在Liod-270上
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统