AREA LDRlabel, CODE,READONLY ENTRY ; Mark first instruction start BL func1 ; Branch to first subroutine BL func2 ; Branch to second subroutine stop MOV r0, #0x18 ; angel_SWIreason_ReportException LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit SWI 0x123456 ; Angel semihosting ARM SWI func1 LDR r0, =start ; => LDR R0,[PC, #offset to ; Litpool 1] LDR r1, =Darea +12 ; => LDR R1,[PC, #offset to ; Litpool 1] LDR r2, =Darea + 6000 ; => LDR R2, [PC, #offset to ; Litpool 1] MOV pc,lr ; Return LTORG ; Literal Pool 1 func2 LDR r3, =Darea +6000 ; => LDR r3, [PC, #offset to ; Litpool 1] ; (sharing with previous literal) ; LDR r4, =Darea +6004 ; If uncommented will produce an ; error as Litpool 2 is out of range MOV pc, lr ; Return Darea % 8000 ; Clears a 8000 byte area of memory, ; starting at the current location, ; to zero. END ; Literal Pool 2 is out of ; range of the LDR instructions ; above