An example ARM assembly language module
An ARM assembly language module has several constituent parts.
- ELF sections (defined by the
- Application entry (defined by the
- Application execution.
- Application termination.
- Program end (defined by the
Constituents of an assembly language module
The following example defines a single section called
ARMex that contains code and is marked as being
AREA ARMex, CODE, READONLY ; Name this block of code ARMex ENTRY ; Mark first instruction to execute start MOV r0, #10 ; Set up parameters MOV r1, #3 ADD r0, r0, r1 ; r0 = r0 + r1 stop MOV r0, #0x18 ; angel_SWIreason_ReportException LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit SVC #0x123456 ; ARM semihosting (formerly SWI) END ; Mark end of file
ENTRY directive declares an entry
point to the program. It marks the first instruction to be executed.
In applications using the C library, an entry point is also contained
within the C library initialization code. Initialization code and
exception handlers also contain entry points.
The application code begins executing at the label
start, where it loads the decimal values 10 and 3 into registers
R1. These registers are
added together and the result placed in
After executing the main code, the application terminates by returning
control to the debugger. You do this using the ARM semihosting SVC (
0x123456 by default), with the following parameters:
- R0 equal to
- R1 equal to
END directive instructs the assembler
to stop processing this source file. Every assembly language source
module must finish with an
on a line by itself. Any lines following the
are ignored by the assembler.