一. 分析uboot之前先简单学习一下Lin参考下的汇编指令,参考 http://blog.sina.com.cn/s/blog_59b189220100au1k.html
1. Linux汇编与windows的不同
- (1)寄存器名上要加%,例如 : pushl %eax
- (2)立即数前要加$, 例如: pushl $1
- (3)源操作数在左边,目标操作数在右边,例如: add $1, %eax
- (4)操作数的字长由最后一个字符决定(b=8bit,w=16bit,l=32bit), 例如 move val, %al
- (5)绝对转移和调用指令(jump/call)的操作数前要加*号做前缀
2. Linux汇编的行结构
- 任何汇编行都是如下结构:
[:] [} @ comment
[:] [} @ 注释 - Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。
3. Linux汇编的标号
- 标号只能由a~z,A~Z,0~9,“.”,_等字符组成。
- 标号为0~9的数字时为局部标号,局部标号可以重复出现,使用方法如下:
标号f: 在引用的地方向前的标号
标号b: 在引用的地方向后的标号
例子:
1:
subs r0,r0,#1 @每次循环使r0=r0-1
bne 1f @跳转