Assembler User GuidePreface Overview of the Assembler Overview of the ARM Architecture Structure of Assembly Language Modules Syntax of source lines in assembly language Literals ELF sections and the AREA directive An example ARM assembly language module Writing ARM Assembly Language Condition Codes Using the Assembler Symbols, Literals, Expressions, and Operators VFP Programming Assembler Command-line Options ARM and Thumb Instructions VFP Instructions Directives Reference Via File Syntax
Syntax of source lines in assembly language
3.1 Syntax of source lines in assembly language
The assembler parses and assembles assembly language to produce object code.
Each line of assembly language source code has this general form:
All three sections of the source line are optional.
Labels are symbolic representations of addresses. You can use labels to mark specific addresses that you want to refer to from other parts of the code. Numeric local labels are a subclass of labels that begin with a number in the range 0-99. Unlike other labels, a numeric local label can be defined many times. This makes them useful when generating labels with a macro.
Directives provide important information to the assembler that either affects the assembly process or affects the final output image.
Instructions and pseudo-instructions make up the code a processor uses to perform tasks.
Instructions, pseudo-instructions, and directives must be preceded by white space, such as a space or a tab, irrespective of whether there is a preceding label or not.
Some directives do not allow the use of a label.
A comment is the final part of a source line. The first semicolon on a line marks the beginning of a comment except where the semicolon appears inside a string literal. The end of the line is the end of the comment. A comment alone is a valid line. The assembler ignores all comments. You can use blank lines to make your code more readable.
Considerations when writing assembly language source code
You must write instruction mnemonics, pseudo-instructions, directives, and symbolic register names (except
AREA THUMBex, CODE, READONLY ; Name this block of code THUMBex ENTRY ; Mark first instruction to execute THUMB 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
To make source files easier to read, you can split a long line of source into several lines by placing a backslash character (
NoteDo not use the backslash followed by end-of-line sequence within quoted strings.
The limit on the length of lines, including any extensions using backslashes, is 4095 characters.
of your data.