| 
	           
		
		
		  
		     | 
		    
		    
                       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)将导致程序的跳转。  
		    
                      
		      
		      
		   | 
		 
               
	     |