LV.12 D9 专用指令 学习笔记

 状态寄存器传送指令

@ 1.4 状态寄存器传送指令:访问(读写)CPSR寄存器
	
		@ 读CPSR
		@ MRS R1, CPSR
		@ R1 = CPSR
		
		@ 写CPSR
		@ MSR CPSR, #0x10
		@ CPSR = 0x10
		
		@ 在USER模式下不能随意修改CPSR,因为USER模式属于非特权模式
		@ MSR CPSR, #0xD3

LV.12 D9 专用指令 学习笔记_第1张图片 

 软中断指令

@ 1.5 软中断指令:触发软中断
	
		@ 异常向量表
		@ B MAIN
		@ B .
		@ B SWI_HANDLER
		@ B .
		@ B .
		@ B .
		@ B .
		@ B .
		
		@ 应用程序
@ MAIN:
		@ MOV SP, #0x40000020
		@ 初始化SVC模式下的栈指针
		@ MSR CPSR, #0x10
		@ 切换成USER模式,开启FIQ、IRQ
		@ MOV R1, #1
		@ MOV R2, #2
		@ SWI #1
		@ 触发软中断异常
		@ ADD R3, R2, R1
		@ B STOP
		
		@ 异常处理程序
@ SWI_HANDLER:
		@ STMFD SP!,{R1,R2,LR}
		@ 压栈保护现场
		@ MOV R1, #10
		@ MOV R2, #20
		@ SUB R3, R2, R1
		@ LDMFD SP!,{R1,R2,PC}^
		@ 出栈恢复现场
		@ 将压入到栈中的LR(返回地址)出栈给PC,实现程序的返回
		@ ‘^’表示出栈的同时将SPSR的值传递给CPSR,实现CPU状态的恢复

协处理指令 

	@ 1.6 协处理器指令:操控协处理器的指令
	
		@ 1.协处理器数据运算指令
		@	CDP
		@ 2.协处理器存储器访问指令
		@	STC	将协处理器中的数据写入到存储器
		@	LDC	将存储器中的数据读取到协处理器
		@ 3.协处理器寄存器传送指令
		@	MRC	将协处理器中寄存器中的数据传送到ARM处理器中的寄存器
		@	MCR	将ARM处理器中寄存器中的数据传送到协处理器中的寄存器

伪指令

@ 2.伪指令:本身不是指令,编译器可以将其替换成若干条等效指令

		@ 空指令
		@ NOP
		
		@ 指令
		@ LDR R1, [R2]
		@ 将R2指向的内存空间中的数据读取到R1寄存器
		
		@ 伪指令
		@ LDR R1, =0x12345678
		@ R1 = 0x12345678	
		@ LDR伪指令可以将任意一个32位的数据放到一个寄存器
		
		@ LDR R1, =STOP
		@ 将STOP表示的地址写入R1寄存器
		
		@ LDR R1, STOP
		@ 将STOP地址中的内容写入R1寄存器

你可能感兴趣的:(学习,笔记,arm开发)