adrlabel.s

来自「一些ARM的源程序」· S 代码 · 共 34 行

S
34
字号
#    	AREA adrlabel, CODE,READONLY
#        ENTRY                           ; Mark first instruction
.text
Start:
        BL func                 		/* Branch to subroutine */

stop:
        MOV     r0, #0x18               /* angel_SWIreason_ReportException */
        LDR     r1, =0x20026    		/* ADP_Stopped_ApplicationExit */
        SWI     0x123456                /* Angel semihosting ARM SWI */

/*        LTORG                           / Create a literal pool */
.ltorg	

func:
        ADR     r0, Start               /* => SUB r0, PC, #offset to Start */
        ADR     r1, DataArea    		/* => ADD r1, PC, #offset to DataArea */
#       ADR r2, DataArea+4300 			
										/* This would fail as the offset 
                                           cannot be expressed by operand2
                                           of an ADD */
        ADRL    r3, DataArea+4300       /* => ADD r2, PC, #offset1 */
                                        /*  ADD r2, r2, #offset2 */

        MOV     pc, lr          		/* Return */

DataArea:
	.SPACE	8000		       				/* Clears a 8000 byte area of memory,
                                          starting at the current location,
                                          to zero.*/
.end
#      END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?