汇编指令的执行过程

;#*********************************************************************************************
;# NAME:	ARM_code2.s																		 *
;# Author: 	WUHAN R&D Center,Embest																	 *
;# Desc:	ARM instruction examples														 *
;#          Example for Condition Code														 *
;# History:	shw.He 2005.02.22																 *
;#*********************************************************************************************

;/*------------------------------------------------------------------------------------------*/
;/*	 								code								 				    */
;/*------------------------------------------------------------------------------------------*/
		
		area start,code,readwrite
		entry
		code32
num equ	2									;/*  Number of entries in jump table */
		export Reset_Handler
Reset_Handler
		mov		r0, #0						;/*  set up the three parameters */
		mov		r1, #3
		mov		r2, #2
		bl		arithfunc					;/*  call the function */
;/*死循环*/
stop
		b		stop


;# ********************************************************************************************
;# * According R0 valude to execute the code													 *
;# ********************************************************************************************
arithfunc									;/*  label the function */
		cmp		r0, #num					;/*  Treat function code as unsigned integer */
		bhs		DoAdd						;/*  If code is >=2 then do operation 0. */

		adr		r3, JumpTable				;/*  Load address of jump table */
		ldr		pc, [r3,r0,LSL#2]			;/*  Jump to the appropriate routine */
                                                                         ;/*pc = r3 + r0<<2*/
JumpTable
		dcd		DoAdd                                ;其占领4个字节,其中存储的是DoAdd对应的地址
		dcd		DoSub                                ;其占领4个字节,其中存储的是DoSub对应的地址

DoAdd
		add		r0, r1, r2					;/*  Operation 0, >1 */
		bx		lr 							;/*  Return */


DoSub
		sub		r0, r1, r2					;/*  Operation 1 */
		bx		lr							;/*  Return */

		end									;/*  mark the end of this file */


执行bl  arithfunc之前

执行之后:

 

其将pc的值保存在r14(LR)之中。

 

 

 ------------------------------------------------------------坚持不懈,追求卓越--------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值