Final Project2 Pong game code on micro-controller

User Generated

Cflpubm_94

Programming

Description

I have a programming project that I need help with.

It has to be in c language, and it needs to include at least one subprogram in assembly language I’m using STM32F446RE ARM Nucleo Board

I have the full instructions, STM32 user manual and code examples attached, including other useful stuff

=====Write a code in C language and assembly language to create a Pong game.=====

Detailed instructions are attached and need to be reviewed before starting.

Include Comments on, literally, everything.

The program should be working on the following:

Keil uVision5

STM32F446RE ARM Nucleo Board

also, I`m using two 74S138 Decoders

Unformatted Attachment Preview

ARM Compiler toolchain ® Version 5.02 Assembler Reference Copyright © 2010-2012 ARM. All rights reserved. ARM DUI 0489H (ID070912) ARM Compiler toolchain Assembler Reference Copyright © 2010-2012 ARM. All rights reserved. Release Information The following changes have been made to this book. Change History Date Issue Confidentiality Change May 2010 A Non-Confidential ARM Compiler toolchain v4.1 Release 30 September 2010 B Non-Confidential Update 1 for ARM Compiler toolchain v4.1 28 January 2011 C Non-Confidential Update 2 for ARM Compiler toolchain v4.1 Patch 3 30 April 2011 D Non-Confidential ARM Compiler toolchain v5.0 Release 29 July 2011 E Non-Confidential Update 1 for ARM Compiler toolchain v5.0 30 September 2011 F Non-Confidential ARM Compiler toolchain v5.01 Release 29 February 2012 G Non-Confidential Document update 1 for ARM Compiler toolchain v5.01 Release 27 July 2012 H Non-Confidential ARM Compiler toolchain v5.02 Release Proprietary Notice Words and logos marked with ® or ™ are registered trademarks or trademarks of ARM® in the EU and other countries, except as otherwise stated below in this proprietary notice. Other brands and names mentioned herein may be the trademarks of their respective owners. Neither the whole nor any part of the information contained in, or the product described in, this document may be adapted or reproduced in any material form except with the prior written permission of the copyright holder. The product described in this document is subject to continuous developments and improvements. All particulars of the product and its use contained in this document are given by ARM in good faith. However, all warranties implied or expressed, including but not limited to implied warranties of merchantability, or fitness for purpose, are excluded. This document is intended only to assist the reader in the use of the product. ARM shall not be liable for any loss or damage arising from the use of any information in this document, or any error or omission in such information, or any incorrect use of the product. Where the term ARM is used it means “ARM or any of its subsidiaries as appropriate”. Confidentiality Status This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license restrictions in accordance with the terms of the agreement entered into by ARM and the party that ARM delivered this document to. Product Status The information in this document is final, that is for a developed product. Web Address http://www.arm.com ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential ii Contents ARM Compiler toolchain Assembler Reference Chapter 1 Chapter 2 Conventions and feedback Assembler command line options 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 ARM DUI 0489H ID070912 Assembler command line syntax ............................................................................. 2-2 Assembler command line options ............................................................................ 2-3 --16 .......................................................................................................................... 2-5 --32 .......................................................................................................................... 2-6 --apcs=qualifier…qualifier ........................................................................................ 2-7 --arm ........................................................................................................................ 2-9 --arm_only .............................................................................................................. 2-10 --bi .......................................................................................................................... 2-11 --bigend .................................................................................................................. 2-12 --brief_diagnostics ................................................................................................. 2-13 --checkreglist ......................................................................................................... 2-14 --compatible=name ................................................................................................ 2-15 --cpreproc .............................................................................................................. 2-16 --cpreproc_opts=options ........................................................................................ 2-17 --cpu=list ................................................................................................................ 2-18 --cpu=name ........................................................................................................... 2-19 --debug .................................................................................................................. 2-20 --depend=dependfile .............................................................................................. 2-21 --depend_format=string ......................................................................................... 2-22 --device=list ........................................................................................................... 2-23 --device=name ....................................................................................................... 2-24 --diag_error=tag{, tag} ........................................................................................... 2-25 --diag_remark=tag{, tag} ........................................................................................ 2-26 --diag_style=style ................................................................................................... 2-27 --diag_suppress=tag{, tag} .................................................................................... 2-28 --diag_warning=tag{, tag} ...................................................................................... 2-29 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential iii Contents 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.35 2.36 2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 2.45 2.46 2.47 2.48 2.49 2.50 2.51 2.52 2.53 2.54 2.55 2.56 2.57 2.58 2.59 2.60 2.61 2.62 2.63 2.64 2.65 2.66 2.67 2.68 2.69 2.70 2.71 2.72 2.73 2.74 2.75 2.76 2.77 2.78 2.79 2.80 2.81 2.82 2.83 2.84 2.85 ARM DUI 0489H ID070912 --dllexport_all ......................................................................................................... --dwarf2 .................................................................................................................. --dwarf3 .................................................................................................................. --errors=errorfile ..................................................................................................... --execstack ............................................................................................................ --exceptions ........................................................................................................... --exceptions_unwind .............................................................................................. --fpmode=model .................................................................................................... --fpu=list ................................................................................................................. --fpu=name ............................................................................................................ -g ............................................................................................................................ --help ...................................................................................................................... -idir{,dir, …} ............................................................................................................ --keep ..................................................................................................................... --length=n .............................................................................................................. --li ........................................................................................................................... --library_type=lib .................................................................................................... --licretry .................................................................................................................. --list=file ................................................................................................................. --list= ...................................................................................................................... --littleend ................................................................................................................ -m ........................................................................................................................... --maxcache=n ........................................................................................................ --md ....................................................................................................................... --no_code_gen ....................................................................................................... --no_esc ................................................................................................................. --no_execstack ...................................................................................................... --no_exceptions ..................................................................................................... --no_exceptions_unwind ........................................................................................ --no_hide_all .......................................................................................................... --no_project ............................................................................................................ --no_reduce_paths ................................................................................................. --no_regs ............................................................................................................... --no_terse .............................................................................................................. --no_unaligned_access .......................................................................................... --no_warn ............................................................................................................... -o filename ............................................................................................................. --pd ........................................................................................................................ --predefine "directive" ............................................................................................ --project=filename .................................................................................................. --reduce_paths ....................................................................................................... --regnames=none .................................................................................................. --regnames=callstd ................................................................................................ --regnames=all ....................................................................................................... --reinitialize_workdir ............................................................................................... --report-if-not-wysiwyg ........................................................................................... --show_cmdline ...................................................................................................... --split_ldm .............................................................................................................. --thumb .................................................................................................................. --thumbx ................................................................................................................. --unaligned_access ................................................................................................ --unsafe .................................................................................................................. --untyped_local_labels ........................................................................................... --version_number ................................................................................................... --via=file ................................................................................................................. --vsn ....................................................................................................................... --width=n ................................................................................................................ --workdir=directory ................................................................................................. --xref ...................................................................................................................... Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-30 2-31 2-32 2-33 2-34 2-35 2-36 2-37 2-38 2-39 2-41 2-42 2-43 2-44 2-45 2-46 2-47 2-48 2-49 2-50 2-51 2-52 2-53 2-54 2-55 2-56 2-57 2-58 2-59 2-60 2-61 2-62 2-63 2-64 2-65 2-66 2-67 2-68 2-69 2-70 2-71 2-72 2-73 2-74 2-75 2-76 2-77 2-78 2-79 2-80 2-81 2-82 2-83 2-84 2-85 2-86 2-87 2-88 2-89 iv Contents Chapter 3 ARM and Thumb Instructions 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36 3.37 3.38 3.39 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 ARM DUI 0489H ID070912 Instruction summary ................................................................................................ 3-2 Instruction width specifiers ....................................................................................... 3-8 Memory access instructions .................................................................................... 3-9 General data processing instructions .................................................................... 3-11 Flexible second operand (Operand2) .................................................................... 3-12 Operand2 as a constant ........................................................................................ 3-13 Operand2 as a register with optional shift ............................................................. 3-14 Shift operations ...................................................................................................... 3-15 Multiply instructions ............................................................................................... 3-18 Saturating instructions ........................................................................................... 3-19 Parallel instructions ................................................................................................ 3-20 Parallel add and subtract ....................................................................................... 3-21 Packing and unpacking instructions ...................................................................... 3-23 Branch and control instructions ............................................................................. 3-24 Coprocessor instructions ....................................................................................... 3-25 Miscellaneous instructions ..................................................................................... 3-26 ThumbEE instructions ............................................................................................ 3-27 Pseudo-instructions ............................................................................................... 3-28 Condition codes ..................................................................................................... 3-29 ADD, SUB, RSB, ADC, SBC, and RSC ................................................................. 3-30 ADR (PC-relative) .................................................................................................. 3-34 ADR (register-relative) ........................................................................................... 3-36 ADRL pseudo-instruction ....................................................................................... 3-38 AND, ORR, EOR, BIC, and ORN .......................................................................... 3-40 ASR, LSL, LSR, ROR, and RRX ........................................................................... 3-42 B, BL, BX, BLX, and BXJ ....................................................................................... 3-45 BFC and BFI .......................................................................................................... 3-48 BKPT ..................................................................................................................... 3-49 CBZ and CBNZ ...................................................................................................... 3-50 CDP and CDP2 ...................................................................................................... 3-51 CHKA ..................................................................................................................... 3-52 CLREX ................................................................................................................... 3-53 CLZ ........................................................................................................................ 3-54 CMP and CMN ....................................................................................................... 3-55 CPS ....................................................................................................................... 3-57 CPY pseudo-instruction ......................................................................................... 3-58 DBG ....................................................................................................................... 3-59 DMB, DSB, and ISB ............................................................................................... 3-60 ENTERX and LEAVEX .......................................................................................... 3-62 ERET ..................................................................................................................... 3-63 HB, HBL, HBLP, and HBP ..................................................................................... 3-64 IT ............................................................................................................................ 3-65 LDC, LDC2, STC, and STC2 ................................................................................. 3-68 LDM and STM ........................................................................................................ 3-70 LDR and STR (immediate offset) ........................................................................... 3-73 LDR and STR (register offset) ............................................................................... 3-76 LDR and STR, unprivileged ................................................................................... 3-79 LDR (PC-relative) .................................................................................................. 3-81 LDR (register-relative) ........................................................................................... 3-84 LDR pseudo-instruction ......................................................................................... 3-87 LDREX and STREX ............................................................................................... 3-90 MAR and MRA ....................................................................................................... 3-93 MCR, MCR2, MCRR, and MCRR2 ........................................................................ 3-94 MIA, MIAPH, and MIAxy ........................................................................................ 3-95 MOV and MVN ....................................................................................................... 3-97 MOV32 pseudo-instruction .................................................................................. 3-100 MOVT .................................................................................................................. 3-101 MRC, MRC2, MRRC and MRRC2 ....................................................................... 3-102 MRS (system coprocessor register to ARM register) .......................................... 3-103 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential v Contents 3.60 3.61 3.62 3.63 3.64 3.65 3.66 3.67 3.68 3.69 3.70 3.71 3.72 3.73 3.74 3.75 3.76 3.77 3.78 3.79 3.80 3.81 3.82 3.83 3.84 3.85 3.86 3.87 3.88 3.89 3.90 3.91 3.92 3.93 3.94 3.95 3.96 3.97 3.98 Chapter 4 3-104 3-106 3-107 3-109 3-111 3-112 3-113 3-115 3-117 3-119 3-121 3-123 3-125 3-126 3-127 3-129 3-130 3-132 3-133 3-135 3-137 3-139 3-141 3-143 3-145 3-146 3-148 3-150 3-152 3-154 3-155 3-156 3-158 3-159 3-160 3-162 3-163 3-165 3-166 NEON and VFP Programming 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 ARM DUI 0489H ID070912 MRS (PSR to general-purpose register) .............................................................. MSR (ARM register to system coprocessor register) .......................................... MSR (general-purpose register to PSR) .............................................................. MUL, MLA, and MLS ........................................................................................... NEG pseudo-instruction ....................................................................................... NOP ..................................................................................................................... PKHBT and PKHTB ............................................................................................. PLD, PLDW, and PLI ........................................................................................... PUSH and POP ................................................................................................... QADD, QSUB, QDADD, and QDSUB ................................................................. REV, REV16, REVSH, and RBIT ........................................................................ RFE ...................................................................................................................... SBFX and UBFX .................................................................................................. SDIV and UDIV .................................................................................................... SEL ...................................................................................................................... SETEND .............................................................................................................. SEV, WFE, WFI, and YIELD ................................................................................ SMC ..................................................................................................................... SMLAD and SMLSD ............................................................................................ SMLALxy ............................................................................................................. SMLALD and SMLSLD ........................................................................................ SMMUL, SMMLA, and SMMLS ........................................................................... SMUAD{X} and SMUSD{X} ................................................................................. SMULxy and SMLAxy .......................................................................................... SMULWy and SMLAWy ....................................................................................... SRS ..................................................................................................................... SSAT and USAT .................................................................................................. SSAT16 and USAT16 .......................................................................................... SUBS pc, lr .......................................................................................................... SVC ..................................................................................................................... SWP and SWPB .................................................................................................. SXT, SXTA, UXT, and UXTA ............................................................................... SYS ...................................................................................................................... TBB and TBH ....................................................................................................... TST and TEQ ....................................................................................................... UMAAL ................................................................................................................ UMULL, UMLAL, SMULL, and SMLAL ................................................................ UND pseudo-instruction ....................................................................................... USAD8 and USADA8 .......................................................................................... Instruction summary ................................................................................................ 4-2 Instructions shared by NEON and VFP ................................................................... 4-7 NEON logical and compare operations ................................................................... 4-8 NEON general data processing instructions ............................................................ 4-9 NEON shift instructions .......................................................................................... 4-10 NEON general arithmetic instructions .................................................................... 4-11 NEON multiply instructions .................................................................................... 4-12 NEON load and store element and structure instructions ...................................... 4-13 Interleaving provided by load and store, element and structure instructions ......... 4-14 Alignment restrictions in load and store, element and structure instructions ......... 4-15 NEON and VFP pseudo-instructions ..................................................................... 4-16 VFP instructions ..................................................................................................... 4-17 V{Q}{R}SHL (by signed variable) ........................................................................... 4-18 V{Q}ABS and V{Q}NEG ......................................................................................... 4-19 V{Q}ADD, VADDL, VADDW, V{Q}SUB, VSUBL, and VSUBW ............................. 4-20 V{R}ADDHN and V{R}SUBHN ............................................................................... 4-21 V{R}HADD and VHSUB ......................................................................................... 4-22 V{R}SHR (by immediate) ....................................................................................... 4-23 V{R}SHRN (by immediate) .................................................................................... 4-24 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential vi Contents 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29 4.30 4.31 4.32 4.33 4.34 4.35 4.36 4.37 4.38 4.39 4.40 4.41 4.42 4.43 4.44 4.45 4.46 4.47 4.48 4.49 4.50 4.51 4.52 4.53 4.54 4.55 4.56 4.57 4.58 4.59 4.60 4.61 4.62 4.63 4.64 4.65 4.66 4.67 4.68 4.69 4.70 4.71 4.72 4.73 4.74 4.75 4.76 4.77 ARM DUI 0489H ID070912 V{R}SRA (by immediate) ....................................................................................... VABA{L} and VABD{L} ........................................................................................... VABS, VNEG, and VSQRT .................................................................................... VACGE and VACGT .............................................................................................. VACLE and VACLT ............................................................................................... VADD, VSUB, and VDIV ........................................................................................ VAND, VBIC, VEOR, VORN, and VORR (register) ............................................... VAND and VORN (immediate) .............................................................................. VBIC and VORR (immediate) ................................................................................ VBIF, VBIT, and VBSL ........................................................................................... VCEQ, VCGE, VCGT, VCLE, and VCLT ............................................................... VCLE and VCLT ................................................................................................... VCLS, VCLZ, and VCNT ....................................................................................... VCMP .................................................................................................................... VCVT (between fixed-point or integer, and floating-point) ..................................... VCVT (between half-precision and single-precision floating-point) ....................... VCVT (between single-precision and double-precision) ........................................ VCVT (between floating-point and integer) ............................................................ VCVT (between floating-point and fixed-point) ...................................................... VCVTB, VCVTT (half-precision extension) ............................................................ VDUP ..................................................................................................................... VEXT ..................................................................................................................... VFMA, VFMS ......................................................................................................... VFMA, VFMS, VFNMA, VFNMS ............................................................................ VLDM, VSTM, VPOP, and VPUSH ....................................................................... VLDn and VSTn (single n-element structure to one lane) ..................................... VLDn (single n-element structure to all lanes) ....................................................... VLDn and VSTn (multiple n-element structures) ................................................... VLDR pseudo-instruction ....................................................................................... VLDR and VSTR (post-increment and pre-decrement) ......................................... VLDR and VSTR .................................................................................................... VMAX, VMIN, VPMAX, and VPMIN ....................................................................... VMOV .................................................................................................................... VMOV, VMVN (immediate) .................................................................................... VMOV, VMVN (register) ........................................................................................ VMOV (between two ARM registers and an extension register) ........................... VMOV (between an ARM register and a NEON scalar) ........................................ VMOV (between one ARM register and single precision VFP) ............................. VMOV2 .................................................................................................................. VMOVL, V{Q}MOVN, VQMOVUN ......................................................................... VMRS and VMSR .................................................................................................. VMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLS ........................................... VMUL{L}, VMLA{L}, and VMLS{L} ......................................................................... VMUL{L}, VMLA{L}, and VMLS{L} (by scalar) ....................................................... VPADD{L}, VPADAL .............................................................................................. VQ{R}DMULH (by vector or by scalar) .................................................................. VQ{R}SHR{U}N (by immediate) ............................................................................. VQDMULL, VQDMLAL, and VQDMLSL (by vector or by scalar) .......................... VRECPE and VRSQRTE ....................................................................................... VRECPS and VRSQRTS ....................................................................................... VREV ..................................................................................................................... VSHL, VQSHL, VQSHLU, and VSHLL (by immediate) ......................................... VSLI and VSRI ....................................................................................................... VSWP .................................................................................................................... VTBL, VTBX .......................................................................................................... VTRN ..................................................................................................................... VTST ...................................................................................................................... VUZP, VZIP ........................................................................................................... Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 4-25 4-26 4-27 4-28 4-29 4-30 4-31 4-32 4-33 4-34 4-35 4-36 4-37 4-38 4-39 4-40 4-41 4-42 4-43 4-44 4-45 4-46 4-47 4-48 4-49 4-50 4-52 4-54 4-56 4-57 4-58 4-59 4-60 4-61 4-62 4-63 4-64 4-65 4-66 4-67 4-68 4-69 4-70 4-71 4-72 4-74 4-75 4-76 4-77 4-78 4-80 4-81 4-83 4-85 4-86 4-87 4-88 4-89 vii Contents Chapter 5 Wireless MMX Technology Instructions 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 Chapter 6 Directives Reference 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21 6.22 6.23 6.24 6.25 6.26 6.27 6.28 6.29 6.30 6.31 6.32 6.33 6.34 6.35 6.36 6.37 6.38 6.39 6.40 6.41 6.42 6.43 6.44 6.45 6.46 6.47 6.48 6.49 ARM DUI 0489H ID070912 About Wireless MMX Technology instructions ........................................................ 5-2 ARM support for Wireless MMX Technology ........................................................... 5-3 Directives, WRN and WCN, to support Wireless MMX Technology ........................ 5-4 Frame directives and Wireless MMX Technology ................................................... 5-5 Wireless MMX load and store instructions ............................................................... 5-6 Wireless MMX Technology and XScale instructions ............................................... 5-8 Wireless MMX instructions ...................................................................................... 5-9 Wireless MMX pseudo-instructions ....................................................................... 5-11 Alphabetical list of directives .................................................................................... 6-2 Symbol definition directives ..................................................................................... 6-3 Data definition directives .......................................................................................... 6-4 About assembly control directives ........................................................................... 6-5 About frame directives ............................................................................................. 6-6 Reporting directives ................................................................................................. 6-7 Instruction set and syntax selection directives ......................................................... 6-8 Miscellaneous directives .......................................................................................... 6-9 ALIAS ..................................................................................................................... 6-10 ALIGN .................................................................................................................... 6-11 AREA ..................................................................................................................... 6-13 ARM, THUMB, THUMBX, CODE16 and CODE32 ................................................ 6-16 ASSERT ................................................................................................................ 6-17 ATTR ..................................................................................................................... 6-18 CN .......................................................................................................................... 6-19 COMMON .............................................................................................................. 6-20 CP .......................................................................................................................... 6-21 DATA ..................................................................................................................... 6-22 DCB ....................................................................................................................... 6-23 DCD and DCDU ..................................................................................................... 6-24 DCDO .................................................................................................................... 6-25 DCFD and DCFDU ................................................................................................ 6-26 DCFS and DCFSU ................................................................................................. 6-27 DCI ......................................................................................................................... 6-28 DCQ and DCQU .................................................................................................... 6-29 DCW and DCWU ................................................................................................... 6-30 END ....................................................................................................................... 6-31 ENTRY ................................................................................................................... 6-32 EQU ....................................................................................................................... 6-33 EXPORT or GLOBAL ............................................................................................ 6-34 EXPORTAS ........................................................................................................... 6-36 FRAME ADDRESS ................................................................................................ 6-37 FRAME POP .......................................................................................................... 6-38 FRAME PUSH ....................................................................................................... 6-39 FRAME REGISTER ............................................................................................... 6-40 FRAME RESTORE ................................................................................................ 6-41 FRAME RETURN ADDRESS ................................................................................ 6-42 FRAME SAVE ........................................................................................................ 6-43 FRAME STATE REMEMBER ................................................................................ 6-44 FRAME STATE RESTORE ................................................................................... 6-45 FRAME UNWIND ON ............................................................................................ 6-46 FRAME UNWIND OFF .......................................................................................... 6-47 FUNCTION or PROC ............................................................................................. 6-48 ENDFUNC or ENDP .............................................................................................. 6-50 FIELD ..................................................................................................................... 6-51 GBLA, GBLL, and GBLS ....................................................................................... 6-52 GET or INCLUDE .................................................................................................. 6-54 IF, ELSE, ENDIF, and ELIF ................................................................................... 6-55 IMPORT and EXTERN .......................................................................................... 6-57 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential viii Contents 6.50 6.51 6.52 6.53 6.54 6.55 6.56 6.57 6.58 6.59 6.60 6.61 6.62 6.63 6.64 6.65 6.66 6.67 6.68 6.69 6.70 Appendix A ARM DUI 0489H ID070912 INCBIN ................................................................................................................... INFO ...................................................................................................................... KEEP ..................................................................................................................... LCLA, LCLL, and LCLS ......................................................................................... LTORG .................................................................................................................. MACRO and MEND ............................................................................................... MAP ....................................................................................................................... MEXIT .................................................................................................................... NOFP ..................................................................................................................... OPT ....................................................................................................................... QN, DN, and SN .................................................................................................... RELOC .................................................................................................................. REQUIRE .............................................................................................................. REQUIRE8 and PRESERVE8 ............................................................................... RLIST ..................................................................................................................... RN .......................................................................................................................... ROUT ..................................................................................................................... SETA, SETL, and SETS ........................................................................................ SPACE or FILL ...................................................................................................... TTL and SUBT ....................................................................................................... WHILE and WEND ................................................................................................ 6-59 6-60 6-61 6-62 6-63 6-64 6-67 6-68 6-69 6-70 6-72 6-74 6-75 6-76 6-78 6-79 6-80 6-81 6-82 6-83 6-84 Revisions for Assembler Reference Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential ix Chapter 1 Conventions and feedback The following describes the typographical conventions and how to give feedback: Typographical conventions The following typographical conventions are used: monospace Denotes text that can be entered at the keyboard, such as commands, file and program names, and source code. monospace Denotes a permitted abbreviation for a command or option. The underlined text can be entered instead of the full command or option name. monospace italic Denotes arguments to commands and functions where the argument is to be replaced by a specific value. monospace bold Denotes language keywords when used outside example code. italic Highlights important notes, introduces special terminology, denotes internal cross-references, and citations. bold Highlights interface elements, such as menu names. Also used for emphasis in descriptive lists, where appropriate, and for ARM® processor signal names. Feedback on this product If you have any comments and suggestions about this product, contact your supplier and give: • ARM DUI 0489H ID070912 your name and company Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 1-1 Conventions and feedback • the serial number of the product • details of the release you are using • details of the platform you are using, such as the hardware platform, operating system type and version • a small standalone sample of code that reproduces the problem • a clear explanation of what you expected to happen, and what actually happened • the commands you used, including any command-line options • sample output illustrating the problem • the version string of the tools, including the version number and build numbers. Feedback on content If you have comments on content then send an e-mail to errata@arm.com. Give: • the title • the number, ARM DUI 0489H • if viewing online, the topic names to which your comments apply • if viewing a PDF version of a document, the page numbers to which your comments apply • a concise explanation of your comments. ARM also welcomes general suggestions for additions and improvements. ARM periodically provides updates and corrections to its documentation on the ARM Information Center, together with knowledge articles and Frequently Asked Questions (FAQs). Other information • ARM Information Center, http://infocenter.arm.com/help/index.jsp • ARM Technical Support Knowledge Articles, http://infocenter.arm.com/help/topic/com.arm.doc.faqs/index.html • ARM Support and Maintenance, http://www.arm.com/support/services/support-maintenance.php • ARM Glossary, http://infocenter.arm.com/help/topic/com.arm.doc.aeg0014-/index.html. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 1-2 Chapter 2 Assembler command line options The following topics describe the ARM® Compiler toolchain assembler command line syntax and the command line options accepted by the assembler, armasm: • Assembler command line syntax on page 2-2 • Assembler command line options on page 2-3. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-1 Assembler command line options 2.1 Assembler command line syntax The command for invoking the ARM assembler is: armasm {options} {inputfile} where: 2.1.1 options are commands to the assembler. You can invoke the assembler with any combination of options separated by spaces. You can specify values for some options. To specify a value for an option, use either ‘=’ (option=value) or a space character (option value). inputfile can be one or more assembly source files separated by spaces. Input files must be UAL, or pre-UAL ARM or Thumb® assembly language source files. See also Using the Compiler: • Order of compiler command-line options on page 3-11. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-2 Assembler command line options 2.2 Assembler command line options The following command line options are supported by the assembler: • --16 on page 2-5 • --32 on page 2-6 • --apcs=qualifier…qualifier on page 2-7 • --arm on page 2-9 • --arm_only on page 2-10 • --bi on page 2-11 • --bigend on page 2-12 • --brief_diagnostics on page 2-13 • --checkreglist on page 2-14 • --compatible=name on page 2-15 • --cpreproc on page 2-16 • --cpreproc_opts=options on page 2-17 • --cpu=list on page 2-18 • --cpu=name on page 2-19 • --debug on page 2-20 • --depend=dependfile on page 2-21 • --depend_format=string on page 2-22 • --device=list on page 2-23 • --device=name on page 2-24 • --diag_error=tag{, tag} on page 2-25 • --diag_remark=tag{, tag} on page 2-26 • --diag_style=style on page 2-27 • --diag_suppress=tag{, tag} on page 2-28 • --diag_warning=tag{, tag} on page 2-29 • --dllexport_all on page 2-30 • --dwarf2 on page 2-31 • --dwarf3 on page 2-32 • --errors=errorfile on page 2-33 • --execstack on page 2-34 • --exceptions on page 2-35 • --exceptions_unwind on page 2-36 • --fpmode=model on page 2-37 • --fpu=list on page 2-38 • --fpu=name on page 2-39 • -g on page 2-41 • --help on page 2-42 • -idir{,dir, …} on page 2-43 • --keep on page 2-44 • --length=n on page 2-45 • --li on page 2-46 • --library_type=lib on page 2-47 • --licretry on page 2-48 • --list=file on page 2-49 • --list= on page 2-50 • --littleend on page 2-51 ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-3 Assembler command line options • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • ARM DUI 0489H ID070912 -m on page 2-52 --maxcache=n on page 2-53 --md on page 2-54 --no_code_gen on page 2-55 --no_esc on page 2-56 --no_execstack on page 2-57 --no_exceptions on page 2-58 --no_exceptions_unwind on page 2-59 --no_hide_all on page 2-60 --no_project on page 2-61 --no_reduce_paths on page 2-62 --no_regs on page 2-63 --no_terse on page 2-64 --no_unaligned_access on page 2-65 --no_warn on page 2-66 -o filename on page 2-67 --pd on page 2-68 --predefine "directive" on page 2-69 --project=filename on page 2-70 --reduce_paths on page 2-71 --regnames=none on page 2-72 --regnames=callstd on page 2-73 --regnames=all on page 2-74 --reinitialize_workdir on page 2-75 --report-if-not-wysiwyg on page 2-76 --show_cmdline on page 2-77 --split_ldm on page 2-78 --thumb on page 2-79 --thumbx on page 2-80 --unaligned_access on page 2-81 --unsafe on page 2-82 --untyped_local_labels on page 2-83 --version_number on page 2-84 --via=file on page 2-85 --vsn on page 2-86 --width=n on page 2-87 --workdir=directory on page 2-88 --xref on page 2-89. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-4 Assembler command line options 2.3 --16 This option instructs the assembler to interpret instructions as Thumb instructions using the pre-UAL Thumb syntax. This is equivalent to a CODE16 directive at the head of the source file. Use the --thumb option to specify Thumb instructions using the UAL syntax. 2.3.1 See also • • ARM DUI 0489H ID070912 --thumb on page 2-79 ARM, THUMB, THUMBX, CODE16 and CODE32 on page 6-16. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-5 Assembler command line options 2.4 --32 This option is a synonym for --arm. 2.4.1 See also • ARM DUI 0489H ID070912 --arm on page 2-9. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-6 Assembler command line options 2.5 --apcs=qualifier…qualifier This option specifies whether you are using the Procedure Call Standard for the ARM Architecture (AAPCS). It can also specify some attributes of code sections. The AAPCS forms part of the Base Standard Application Binary Interface for the ARM Architecture (BSABI) specification. By writing code that adheres to the AAPCS, you can ensure that separately compiled and assembled modules can work together. Note AAPCS qualifiers do not affect the code produced by the assembler. They are an assertion by the programmer that the code in inputfile complies with a particular variant of AAPCS. They cause attributes to be set in the object file produced by the assembler. The linker uses these attributes to check compatibility of files, and to select appropriate library variants. Values for qualifier are: Specifies that inputfile does not use AAPCS. AAPCS registers are not set up. Other qualifiers are not permitted if you use none. none /interwork, /nointerwork /interwork specifies that the code in the inputfile can interwork between ARM and Thumb safely. The default is /nointerwork. /inter, /nointer Are synonyms for /interwork and /nointerwork. /ropi, /noropi /ropi specifies that the code in inputfile is Read-Only Position-Independent (ROPI). The default is /noropi. /pic, /nopic Are synonyms for /ropi and /noropi. /rwpi, /norwpi /rwpi specifies that the code in inputfile is Read-Write Position-Independent (RWPI). The default is /norwpi. /pid, /nopid Are synonyms for /rwpi and /norwpi. /fpic, /nofpic /fpic specifies that the code in inputfile is read-only independent and references to addresses are suitable for use in a Linux shared object. The default is /nofpic. /hardfp, /softfp Requests hardware or software floating-point linkage. This enables the procedure call standard to be specified separately from the version of the floating-point hardware available through the --fpu option. It is still possible to specify the procedure call standard by using the --fpu option, but ARM recommends you use --apcs. If floating-point support is not permitted (for example, because --fpu=none is specified, or because of other means), then /hardfp and /softfp are ignored. If floating-point support is permitted and the softfp calling convention is used (--fpu=softvfp or --fpu=softvfp+vfp...), then /hardfp gives an error. Note You must specify at least one qualifier. If you specify more than one qualifier, ensure that there are no spaces or commas between the individual qualifiers in the list. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-7 Assembler command line options 2.5.1 Example armasm --apcs=/inter/ropi inputfile.s 2.5.2 See also Procedure Call Standard for the ARM Architecture, http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042-/index.html. Compiler Reference: • --apcs=qualifer...qualifier on page 3-11. Developing Software for ARM Processors: • Chapter 5 Interworking ARM and Thumb. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-8 Assembler command line options 2.6 --arm This option instructs the assembler to interpret instructions as ARM instructions. It does not, however, guarantee ARM-only code in the object file. This is the default. Using this option is equivalent to specifying the ARM or CODE32 directive at the start of the source file. 2.6.1 See also • • • ARM DUI 0489H ID070912 --32 on page 2-6 --arm_only on page 2-10 ARM, THUMB, THUMBX, CODE16 and CODE32 on page 6-16. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-9 Assembler command line options 2.7 --arm_only This option instructs the assembler to only generate ARM code. This is similar to --arm but also has the property that the assembler does not permit the generation of any Thumb code. 2.7.1 See also • ARM DUI 0489H ID070912 --arm on page 2-9. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-10 Assembler command line options 2.8 --bi This option is a synonym for --bigend. 2.8.1 See also • • ARM DUI 0489H ID070912 --bigend on page 2-12 --littleend on page 2-51 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-11 Assembler command line options 2.9 --bigend This option instructs the assembler to assemble code suitable for a big-endian ARM processor. The default is --littleend. 2.9.1 See also • ARM DUI 0489H ID070912 --littleend on page 2-51. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-12 Assembler command line options 2.10 --brief_diagnostics This option instructs the assembler to use a shorter form of the diagnostic output. In this form, the original source line is not displayed and the error message text is not wrapped when it is too long to fit on a single line. The default is --no_brief_diagnostics. 2.10.1 See also • • ARM DUI 0489H ID070912 --diag_error=tag{, tag} on page 2-25 --diag_warning=tag{, tag} on page 2-29. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-13 Assembler command line options 2.11 --checkreglist This option instructs the assembler to check RLIST, LDM, and STM register lists to ensure that all registers are provided in increasing register number order. A warning is given if registers are not listed in order. This option is deprecated. Use --diag_warning 1206 instead. 2.11.1 See also • ARM DUI 0489H ID070912 --diag_warning=tag{, tag} on page 2-29. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-14 Assembler command line options 2.12 --compatible=name This option specifies a second processor or architecture, name, for which the assembler generates compatible code. When you specify a processor or architecture name using --compatible, valid values of name for both the --cpu and --compatible options are restricted to those shown in Table 2-1 and must not be from the same group. Table 2-1 Compatible processor or architecture combinations Group 1 ARM7TDMI, 4T Group 2 Cortex™-M0, Cortex-M1, Cortex-M3, Cortex-M4, 7-M, 6-M, 6S-M, SC300, SC000 Specify --compatible=NONE to turn off all previous instances of the option on the command line. 2.12.1 Example armasm --cpu=arm7tdmi --compatible=cortex-m3 inputfile.s 2.12.2 See also • ARM DUI 0489H ID070912 --cpu=name on page 2-19. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-15 Assembler command line options 2.13 --cpreproc This option instructs the assembler to call armcc to preprocess the input file before assembling it. 2.13.1 See also • --cpreproc_opts=options on page 2-17. Using the Assembler: • Using the C preprocessor on page 7-24. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-16 Assembler command line options 2.14 --cpreproc_opts=options This option enables the assembler to pass compiler options to armcc when using the C preprocessor. options is a comma-separated list of options and their values. 2.14.1 Example armasm --cpreproc --cpreproc_opts=’-DDEBUG=1’ inputfile.s 2.14.2 See also • --cpreproc on page 2-16. Using the Assembler: • Using the C preprocessor on page 7-24. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-17 Assembler command line options 2.15 --cpu=list This option lists the supported CPU and architecture names that can be used with the --cpu name option. 2.15.1 Example armasm --cpu=list 2.15.2 See also • ARM DUI 0489H ID070912 --cpu=name on page 2-19. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-18 Assembler command line options 2.16 --cpu=name This option sets the target CPU. Some instructions produce either errors or warnings if assembled for the wrong target CPU. Valid values for name are architecture names such as 4T, 5TE, or 6T2, or part numbers such as ARM7TDMI®. The default is ARM7TDMI. Note ARMv7 is not a recognized ARM architecture. Using --cpu=7 generates only Thumb instructions that are common in the ARMv7-A, ARMv7-R, and ARMv7-M architectures. 2.16.1 Example armasm --cpu=Cortex-M3 inputfile.s 2.16.2 See also Reference • --cpu=list on page 2-18 • --unsafe on page 2-82 • --compatible=name on page 2-15. Other information • ARM Architecture Reference Manual, http://infocenter.arm.com/help/topic/com.arm.doc.subset.architecture.reference/. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-19 Assembler command line options 2.17 --debug This option instructs the assembler to generate DWARF debug tables. --debug is a synonym for -g. The default is DWARF 3. Note Local symbols are not preserved with --debug. You must specify --keep if you want to preserve the local symbols to aid debugging. 2.17.1 See also • • • ARM DUI 0489H ID070912 --dwarf2 on page 2-31 --dwarf3 on page 2-32 --keep on page 2-44. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-20 Assembler command line options 2.18 --depend=dependfile This option instructs the assembler to save source file dependency lists to dependfile. These are suitable for use with make utilities. 2.18.1 See also • • ARM DUI 0489H ID070912 --md on page 2-54 --depend_format=string on page 2-22. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-21 Assembler command line options 2.19 --depend_format=string This option changes the format of output dependency files to UNIX-style format, for compatibility with some UNIX make programs. The value of string can be one of: Generates dependency files with UNIX-style path separators. unix unix_escaped Is the same as unix, but escapes spaces with backslash. unix_quoted Is the same as unix, but surrounds path names with double quotes. 2.19.1 See also • ARM DUI 0489H ID070912 --depend=dependfile on page 2-21. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-22 Assembler command line options 2.20 --device=list This option lists the supported device names that can be used with the --device=name option. Note This option is deprecated. 2.20.1 See also • ARM DUI 0489H ID070912 --device=name on page 2-24. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-23 Assembler command line options 2.21 --device=name This option selects a specified device as the target and sets the associated processor settings. Note This option is deprecated. 2.21.1 See also • • • ARM DUI 0489H ID070912 --device=list on page 2-23 --cpu=name on page 2-19 --device=name on page 3-69 in the Compiler Reference. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-24 Assembler command line options 2.22 --diag_error=tag{, tag} Diagnostic messages output by the assembler can be identified by a tag in the form of {prefix}number, where the prefix is A. The --diag_error option sets the diagnostic messages that have the specified tags to the error severity. You can specify more than one tag with these options by separating each tag using a comma.You can specify the optional assembler prefix A before the tag number. If any prefix other than A is included, the message number is ignored. Table 2-2 shows the meaning of the term severity used in the option descriptions. Table 2-2 Severity of diagnostic messages Severity Description Error Errors indicate violations in the syntactic or semantic rules of assembly language. Assembly continues, but object code is not generated. Warning Warnings indicate unusual conditions in your code that might indicate a problem. Assembly continues, and object code is generated unless any problems with an Error severity are detected. Remark Remarks indicate common, but not recommended, use of assembly language. These diagnostics are not issued by default. Assembly continues, and object code is generated unless any problems with an Error severity are detected. You can set the tag to warning to treat all warnings as errors. 2.22.1 See also • • • ARM DUI 0489H ID070912 --brief_diagnostics on page 2-13 --diag_warning=tag{, tag} on page 2-29 --diag_suppress=tag{, tag} on page 2-28. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-25 Assembler command line options 2.23 --diag_remark=tag{, tag} Diagnostic messages output by the assembler can be identified by a tag in the form of {prefix}number, where the prefix is A. The --diag_remark option sets the diagnostic messages that have the specified tags to the remark severity. You can specify more than one tag with these options by separating each tag using a comma.You can specify the optional assembler prefix A before the tag number. If any prefix other than A is included, the message number is ignored. 2.23.1 See also • • ARM DUI 0489H ID070912 --brief_diagnostics on page 2-13 --diag_error=tag{, tag} on page 2-25. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-26 Assembler command line options 2.24 --diag_style=style This option instructs the assembler to display diagnostic messages using the specified style, where style is one of: arm Display messages using the ARM assembler style. This is the default if --diag_style is not specified. ide Include the line number and character count for the line that is in error. These values are displayed in parentheses. gnu Display messages using the GNU style. Choosing the option --diag_style=ide implicitly selects the option --brief_diagnostics. Explicitly selecting --no_brief_diagnostics on the command line overrides the selection of --brief_diagnostics implied by --diag_style=ide. Selecting either the option --diag_style=arm or the option --diag_style=gnu does not imply any selection of --brief_diagnostics. 2.24.1 See also • • ARM DUI 0489H ID070912 --brief_diagnostics on page 2-13 --diag_style=style. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-27 Assembler command line options 2.25 --diag_suppress=tag{, tag} Diagnostic messages output by the assembler can be identified by a tag in the form of {prefix}number, where the prefix is A. The --diag_suppress option disables the diagnostic messages that have the specified tags. You can specify more than one tag with these options by separating each tag using a comma. For example, to suppress the warning messages that have numbers 1293 and 187, use the following command: armasm --diag_suppress=1293,187 You can specify the optional assembler prefix A before the tag number. For example: armasm --diag_suppress=A1293,A187 If any prefix other than A is included, the message number is ignored. Diagnostic message tags can be cut and pasted directly into a command line. You can also set the tag to: • warning, to suppress all warnings • error, to suppress all downgradeable errors. 2.25.1 See also • ARM DUI 0489H ID070912 --diag_error=tag{, tag} on page 2-25. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-28 Assembler command line options 2.26 --diag_warning=tag{, tag} Diagnostic messages output by the assembler can be identified by a tag in the form of {prefix}number, where the prefix is A. The --diag_warning option sets the diagnostic messages that have the specified tags to the warning severity. You can specify more than one tag with these options by separating each tag using a comma.You can specify the optional assembler prefix A before the tag number. If any prefix other than A is included, the message number is ignored. You can set the tag to error to downgrade the severity of all downgradeable errors to warnings. 2.26.1 See also • ARM DUI 0489H ID070912 --diag_error=tag{, tag} on page 2-25. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-29 Assembler command line options 2.27 --dllexport_all This option gives all exported global symbols STV_PROTECTED visibility in ELF rather than STV_HIDDEN, unless overridden by source directives. 2.27.1 See also • ARM DUI 0489H ID070912 EXPORT or GLOBAL on page 6-34. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-30 Assembler command line options 2.28 --dwarf2 This option can be used with --debug, to instruct the assembler to generate DWARF 2 debug tables. 2.28.1 See also • • ARM DUI 0489H ID070912 --debug on page 2-20 --dwarf3 on page 2-32. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-31 Assembler command line options 2.29 --dwarf3 This option can be used with --debug, to instruct the assembler to generate DWARF 3 debug tables. This is the default if --debug is specified. 2.29.1 See also • • ARM DUI 0489H ID070912 --debug on page 2-20 --dwarf2 on page 2-31. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-32 Assembler command line options 2.30 --errors=errorfile This option instructs the assembler to output error messages to errorfile. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-33 Assembler command line options 2.31 --execstack This option generates a .note.GNU-stack section marking the stack as executable. You can also use the AREA directive to generate an executable .note.GNU-stack section: AREA |.note.GNU-stack|,ALIGN=0,READONLY,NOALLOC,CODE In the absence of --execstack and --no_execstack, the .note.GNU-stack section is not generated unless it is specified by the AREA directive. 2.31.1 See also • • ARM DUI 0489H ID070912 --no_execstack on page 2-57 AREA on page 6-13. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-34 Assembler command line options 2.32 --exceptions This option instructs the assembler to switch on exception table generation for all functions defined by FUNCTION (or PROC) and ENDFUNC (or ENDP). 2.32.1 See also • • • • • • • ARM DUI 0489H ID070912 --no_exceptions on page 2-58 --exceptions_unwind on page 2-36 --no_exceptions_unwind on page 2-59 FRAME UNWIND ON on page 6-46 FUNCTION or PROC on page 6-48 ENDFUNC or ENDP on page 6-50 FRAME UNWIND OFF on page 6-47. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-35 Assembler command line options 2.33 --exceptions_unwind This option instructs the assembler to produce unwind tables for functions where possible. This is the default. For finer control, use FRAME UNWIND ON and FRAME UNWIND OFF directives. 2.33.1 See also • • • • • • • ARM DUI 0489H ID070912 --no_exceptions_unwind on page 2-59 --exceptions on page 2-35 --no_exceptions on page 2-58 FRAME UNWIND ON on page 6-46 FRAME UNWIND OFF on page 6-47 FUNCTION or PROC on page 6-48 ENDFUNC or ENDP on page 6-50. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-36 Assembler command line options 2.34 --fpmode=model This option specifies the floating-point model, and sets library attributes and floating-point optimizations to select the most suitable library when linking. Note This does not cause any changes to the code that you write. model can be one of: none Source code is not permitted to use any floating-point type or floating point instruction. This option overrides any explicit --fpu=name option. ieee_full All facilities, operations, and representations guaranteed by the IEEE standard are available in single and double-precision. Modes of operation can be selected dynamically at runtime. ieee_fixed IEEE standard with round-to-nearest and no inexact exception. ieee_no_fenv IEEE standard with round-to-nearest and no exceptions. This mode is compatible with the Java floating-point arithmetic model. IEEE finite values with denormals flushed to zero, round-to-nearest and no exceptions. It is C and C++ compatible. This is the default option. std Finite values are as predicted by the IEEE standard. It is not guaranteed that NaNs and infinities are produced in all circumstances defined by the IEEE model, or that when they are produced, they have the same sign. Also, it is not guaranteed that the sign of zero is that predicted by the IEEE model. Some value altering optimizations, where accuracy is sacrificed to fast execution. This is not IEEE compatible, and is not standard C. fast 2.34.1 Example armasm --fpmode ieee_full inputfile.s 2.34.2 See also Reference • --fpu=name on page 2-39. Other information • ARM DUI 0489H ID070912 IEEE Standards Association, http://standards.ieee.org/. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-37 Assembler command line options 2.35 --fpu=list This option lists the supported FPU names that can be used with the --fpu=name option. 2.35.1 Example armasm --fpu=list 2.35.2 See also • • ARM DUI 0489H ID070912 --fpu=name on page 2-39 --fpmode=model on page 2-37. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-38 Assembler command line options 2.36 --fpu=name This option selects the target floating-point unit (FPU) architecture. If you specify this option it overrides any implicit FPU set by the --cpu option. The assembler produces an error if the FPU you specify explicitly is incompatible with the CPU. Floating-point instructions also produce either errors or warnings if assembled for the wrong target FPU. The assembler sets a build attribute corresponding to name in the object file. The linker determines compatibility between object files, and selection of libraries, accordingly. Valid values for name are: none Selects no floating-point architecture. This makes your assembled object file compatible with object files built with any FPU. vfpv3 Selects hardware floating-point unit conforming to architecture VFPv3. vfpv3_fp16 Selects hardware floating-point unit conforming to architecture VFPv3 with half-precision floating-point extension. vfpv3_d16 Selects hardware floating-point unit conforming to architecture VFPv3-D16. vfpv3_d16_fp16 Selects hardware floating-point unit conforming to architecture VFPv3-D16 with half-precision floating-point extension. vfpv4 Selects hardware floating-point unit conforming to architecture VFPv4. vfpv4_d16 Selects hardware floating-point unit conforming to architecture VFPv4-D16. fpv4-sp Selects hardware floating-point unit conforming to the single precision variant of architecture FPv4. vfpv2 Selects hardware floating-point unit conforming to architecture VFPv2. softvfp Selects software floating-point linkage. This is the default if you do not specify a --fpu option and the --cpu option selected does not imply a particular FPU. softvfp+vfpv2 Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu vfpv2. softvfp+vfpv3 Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu vfpv3. softvfp+vfpv3_fp16 Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu vfpv3_fp16. softvfp+vfpv3_d16 Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu vfpv3_d16. softvfp+vfpv3_d16_fp16 Selects a floating-point library with software floating-point linkage that uses VFP instructions. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-39 Assembler command line options This is otherwise equivalent to using --fpu vfpv3_d16_fp16. softvfp+vfpv4 Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu vfpv4. softvfp+vfpv4_d16 Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu vfpv4_d16. softvfp+fpv4-sp Selects a floating-point library with software floating-point linkage that uses VFP instructions. This is otherwise equivalent to using --fpu fpv4-sp. 2.36.1 See also • ARM DUI 0489H ID070912 --fpmode=model on page 2-37. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-40 Assembler command line options 2.37 -g This option is a synonym for --debug. 2.37.1 See also • ARM DUI 0489H ID070912 --debug on page 2-20. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-41 Assembler command line options 2.38 --help This option instructs the assembler to show a summary of the available command line options. 2.38.1 See also • • ARM DUI 0489H ID070912 --version_number on page 2-84 --vsn on page 2-86. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-42 Assembler command line options 2.39 -idir{,dir, …} This option adds directories to the source file include path. Any directories added using this option have to be fully qualified. 2.39.1 See also • ARM DUI 0489H ID070912 GET or INCLUDE on page 6-54. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-43 Assembler command line options 2.40 --keep This option instructs the assembler to keep local labels in the symbol table of the object file, for use by the debugger. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-44 Assembler command line options 2.41 --length=n This option sets the listing page length to n. Length zero means an unpaged listing. The default is 66 lines. 2.41.1 See also • ARM DUI 0489H ID070912 --list=file on page 2-49. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-45 Assembler command line options 2.42 --li This option is a synonym for --littleend. 2.42.1 See also • • ARM DUI 0489H ID070912 --littleend on page 2-51 --bigend on page 2-12. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-46 Assembler command line options 2.43 --library_type=lib This option enables the relevant library selection to be used at link time. Where lib can be one of: standardlib Specifies that the full ARM runtime libraries are selected at link time. This is the default. microlib Specifies that the C micro-library (microlib) is selected at link time. Note This option can be used with the compiler, assembler or linker when use of the libraries require more specialized optimizations. Use this option with the linker to override all other --library_type options. 2.43.1 See also ARM DUI 0489H ID070912 • Building an application with microlib on page 3-7 in the Using ARM C and C++ Libraries and Floating Point Support • --library_type=lib on page 3-130 in the Compiler Reference. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-47 Assembler command line options 2.44 --licretry If you are using floating licenses, this option makes up to 10 attempts to obtain a license when you invoke armasm. Use this option if your builds are failing to obtain a license from your license server, and only after you have ruled out any other problems with the network or the license server setup. ARM recommends that you place this option in the ARMCCn_ASMOPT environment variable. In this way, you do not have to modify your build files. 2.44.1 See also • Toolchain environment variables on page 2-14 in the Introducing the ARM Compiler toolchain • --licretry on page 3-131 in the Compiler Reference • --licretry on page 2-99 in the Linker Reference • --licretry on page 4-51 in Using the fromelf Image Converter • Flexnet for ARM® Tools License Management Guide, http://infocenter.arm.com/help/topic/com.arm.doc.dui0209i/index.html. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-48 Assembler command line options 2.45 --list=file This option instructs the assembler to output a detailed listing of the assembly language produced by the assembler to file. If - is given as file, listing is sent to stdout. Use the following command line options to control the behavior of --list: • --no_terse • --width • --length • --xref. 2.45.1 See also • • • • ARM DUI 0489H ID070912 --no_terse on page 2-64 --width=n on page 2-87 --length=n on page 2-45 --xref on page 2-89. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-49 Assembler command line options 2.46 --list= This option instructs the assembler to send the detailed assembly language listing to inputfile.lst. Note You can use --list without a filename to send the output to inputfile.lst. However, this syntax is deprecated and the assembler issues a warning. This syntax will be removed in a later release. Use --list= instead. 2.46.1 See also • ARM DUI 0489H ID070912 --list=file on page 2-49. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-50 Assembler command line options 2.47 --littleend This option instructs the assembler to assemble code suitable for a little-endian ARM processor. 2.47.1 See also • ARM DUI 0489H ID070912 --bigend on page 2-12. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-51 Assembler command line options 2.48 -m This option instructs the assembler to write source file dependency lists to stdout. 2.48.1 See also • ARM DUI 0489H ID070912 --md on page 2-54. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-52 Assembler command line options 2.49 --maxcache=n This option sets the maximum source cache size to n bytes. The default is 8MB. armasm gives a warning if size is less than 8MB. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-53 Assembler command line options 2.50 --md This option instructs the assembler to write source file dependency lists to inputfile.d. 2.50.1 See also • ARM DUI 0489H ID070912 -m on page 2-52. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-54 Assembler command line options 2.51 --no_code_gen This option instructs the assembler to exit after pass 1. No object file is generated. This option is useful if you only want to check the syntax of the source code or directives. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-55 Assembler command line options 2.52 --no_esc This option instructs the assembler to ignore C-style escaped special characters, such as \n and \t. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-56 Assembler command line options 2.53 --no_execstack This option generates a .note.GNU-stack section marking the stack as non-executable. You can also use the AREA directive to generate a non executable .note.GNU-stack section: AREA |.note.GNU-stack|,ALIGN=0,READONLY,NOALLOC In the absence of --execstack and --no_execstack, the .note.GNU-stack section is not generated unless it is specified by the AREA directive. If both the command-line option and source directive are used and are different, then the stack is marked as executable. Table 2-3 Specifying a command-line option and an AREA directive for GNU-stack sections 2.53.1 --execstack command-line option --no_execstack command-line option execstack AREA directive execstack execstack no_execstack AREA directive execstack no_execstack See also • • ARM DUI 0489H ID070912 --execstack on page 2-34 AREA on page 6-13. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-57 Assembler command line options 2.54 --no_exceptions This option instructs the assembler to switch off exception table generation. No tables are generated. This is the default. 2.54.1 See also • • • • • ARM DUI 0489H ID070912 --exceptions on page 2-35 --exceptions_unwind on page 2-36 --no_exceptions_unwind on page 2-59 FRAME UNWIND ON on page 6-46 FRAME UNWIND OFF on page 6-47. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-58 Assembler command line options 2.55 --no_exceptions_unwind This option instructs the assembler to produce nounwind tables for every function. 2.55.1 See also • • • ARM DUI 0489H ID070912 --exceptions on page 2-35 --no_exceptions on page 2-58 --exceptions_unwind on page 2-36. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-59 Assembler command line options 2.56 --no_hide_all This option gives all exported and imported global symbols STV_DEFAULT visibility in ELF rather than STV_HIDDEN, unless overridden by source directives. 2.56.1 See also • • ARM DUI 0489H ID070912 EXPORT or GLOBAL on page 6-34 IMPORT and EXTERN on page 6-57. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-60 Assembler command line options 2.57 --no_project This option disables the use of a project template file. Note This option is deprecated. 2.57.1 See also • • • • ARM DUI 0489H ID070912 --project=filename, --no_project on page 3-175 in the Compiler Reference --project=filename on page 2-70 --reinitialize_workdir on page 2-75 --workdir=directory on page 2-88. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-61 Assembler command line options 2.58 --no_reduce_paths This option disables the elimination of redundant pathname information in file paths. This is the default setting. Note This option is valid for Windows systems only. 2.58.1 See also • • ARM DUI 0489H ID070912 --reduce_paths on page 2-71 --reduce_paths, --no_reduce_paths on page 3-178 in the Compiler Reference. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-62 Assembler command line options 2.59 --no_regs This option instructs the assembler not to predefine register names. This option is deprecated. Use --regnames=none instead. 2.59.1 See also • • • • • ARM DUI 0489H ID070912 --regnames=none on page 2-72 Predeclared core register names on page 3-13 in Using the Assembler Predeclared extension register names on page 3-14 in Using the Assembler Predeclared XScale register names on page 3-15 in Using the Assembler Predeclared coprocessor names on page 3-16 in Using the Assembler. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-63 Assembler command line options 2.60 --no_terse This option instructs the assembler to show the lines of assembly code that have been skipped because of conditional assembly in the list file. When this option is not specified on the command line, the assembler does not output the skipped assembly code to the list file. This option turns off the terse flag. By default the terse flag is on. 2.60.1 See also • ARM DUI 0489H ID070912 --list=file on page 2-49. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-64 Assembler command line options 2.61 --no_unaligned_access This option instructs the assembler to set an attribute in the object file to disable the use of unaligned accesses. 2.61.1 See also • ARM DUI 0489H ID070912 --unaligned_access on page 2-81. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-65 Assembler command line options 2.62 --no_warn This option turns off warning messages. 2.62.1 See also • ARM DUI 0489H ID070912 --diag_warning=tag{, tag} on page 2-29. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-66 Assembler command line options 2.63 -o filename This option names the output object file. If this option is not specified, the assembler creates an object filename of the form inputfilename.o. This option is case-sensitive. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-67 Assembler command line options 2.64 --pd This option is a synonym for --predefine. 2.64.1 See also • ARM DUI 0489H ID070912 --predefine "directive" on page 2-69. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-68 Assembler command line options 2.65 --predefine "directive" This option instructs the assembler to pre-execute one of the SET directives. The directive is one of the SETA, SETL, or SETS directives. You must enclose directive in quotes, for example: armasm --predefine "VariableName SETA 20" inputfile.s The assembler also executes a corresponding GBLL, GBLS, or GBLA directive to define the variable before setting its value. The variable name is case-sensitive. The variables defined using the command line are global to the assembler source files specified on the command line. Note The command line interface of your system might require you to enter special character combinations, such as \”, to include strings in directive. Alternatively, you can use --via file to include a --predefine argument. The command line interface does not alter arguments from --via files. Note --predefine is not equivalent to the compiler option -Dname. --predefine defines a global variable whereas -Dname defines a macro that the C preprocessor will expand. Although you can use predefined global variables in combination with assembly control directives, for example IF and ELSE to control conditional assembly, they are not intended to provide the same functionality as the C preprocessor in the assembler. If you need this functionality, ARM recommends you use the compiler to pre-process your assembly code. 2.65.1 See also • • • • • ARM DUI 0489H ID070912 --pd on page 2-68 GBLA, GBLL, and GBLS on page 6-52 SETA, SETL, and SETS on page 6-81 IF, ELSE, ENDIF, and ELIF on page 6-55 Conditional assembly on page 7-22 in Using the Assembler. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-69 Assembler command line options 2.66 --project=filename This option enables the use of a project template file. Project templates are files containing project information such as command line options for a particular configuration. These files are stored in the project template working directory. Note This option is deprecated. 2.66.1 See also • • • • ARM DUI 0489H ID070912 --project=filename, --no_project on page 3-175 in the Compiler Reference --no_project on page 2-61 --reinitialize_workdir on page 2-75 --workdir=directory on page 2-88. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-70 Assembler command line options 2.67 --reduce_paths This option enables the elimination of redundant pathname information in file paths. Windows systems impose a 260 character limit on file paths. Where relative pathnames exist whose absolute names expand to longer than 260 characters, you can use the --reduce_paths option to reduce absolute pathname length by matching up directories with corresponding instances of .. and eliminating the directory/.. sequences in pairs. Note ARM recommends that you avoid using long and deeply nested file paths, in preference to minimizing path lengths using the --reduce_paths option. Note This option is valid for Windows systems only. 2.67.1 See also • • ARM DUI 0489H ID070912 --no_reduce_paths on page 2-62 --reduce_paths, --no_reduce_paths on page 3-178 in the Compiler Reference. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-71 Assembler command line options 2.68 --regnames=none This option instructs the assembler not to predefine register names. 2.68.1 See also • • • • • • • ARM DUI 0489H ID070912 --regnames=callstd on page 2-73 --regnames=all on page 2-74 --no_regs on page 2-63 Predeclared core register names on page 3-13 in Using the Assembler Predeclared extension register names on page 3-14 in Using the Assembler Predeclared XScale register names on page 3-15 in Using the Assembler Predeclared coprocessor names on page 3-16 in Using the Assembler. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-72 Assembler command line options 2.69 --regnames=callstd This option defines additional register names based on the AAPCS variant that you are using as specified by the --apcs option. 2.69.1 See also • • • ARM DUI 0489H ID070912 --apcs=qualifier…qualifier on page 2-7 --regnames=none on page 2-72 --regnames=all on page 2-74. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-73 Assembler command line options 2.70 --regnames=all This option defines all AAPCS registers regardless of the value of --apcs. • --apcs=qualifier…qualifier on page 2-7 • --regnames=none on page 2-72 • --regnames=callstd on page 2-73. ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-74 Assembler command line options 2.71 --reinitialize_workdir This option enables you to re-initialize the project template working directory. Note This option is deprecated. 2.71.1 See also • • • • ARM DUI 0489H ID070912 --reinitialize_workdir on page 3-179 in the Compiler Reference. --project=filename on page 2-70 --no_project on page 2-61 --workdir=directory on page 2-88 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-75 Assembler command line options 2.72 --report-if-not-wysiwyg This option instructs the assembler to report when the assembler outputs an encoding that was not directly requested in the source code. This can happen when the assembler: ARM DUI 0489H ID070912 • uses a pseudo-instruction that is not available in other assemblers, for example MOV32 • outputs an encoding that does not directly match the instruction mnemonic, for example if the assembler outputs the MVN encoding when assembling the MOV instruction • inserts additional instructions where necessary for instruction syntax semantics, for example the assembler can insert a missing IT instruction before a conditional Thumb instruction. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-76 Assembler command line options 2.73 --show_cmdline This option outputs the command line used by the assembler. It shows the command line after processing by the assembler, and can be useful to check: • the command line a build system is using • how the assembler is interpreting the supplied command line, for example, the ordering of command line options. The commands are shown normalized, and the contents of any via files are expanded. The output is sent to the standard output stream (stdout). 2.73.1 See also • ARM DUI 0489H ID070912 --via=file on page 2-85. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-77 Assembler command line options 2.74 --split_ldm This option instructs the assembler to fault LDM and STM instructions with a large number of registers. Use of this option is deprecated. This option faults LDM instructions if the maximum number of registers transferred exceeds: • 5, for LDMs that do not load the PC • 4, for LDMs that load the PC. This option faults STM instructions if the maximum number of registers transferred exceeds 5. Avoiding large multiple register transfers can reduce interrupt latency on ARM systems that: • do not have a cache or a write buffer (for example, a cacheless ARM7TDMI) • use zero wait-state, 32-bit memory. Also, avoiding large multiple register transfers: 2.74.1 • always increases code size. • has no significant benefit for cached systems or processors with a write buffer. • has no benefit for systems without zero wait-state memory, or for systems with slow peripheral devices. Interrupt latency in such systems is determined by the number of cycles required for the slowest memory or peripheral access. This is typically much greater than the latency introduced by multiple register transfers. • LDM and STM on page 3-70. See also ARM DUI 0489H ID070912 Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-78 Assembler command line options 2.75 --thumb This option instructs the assembler to interpret instructions as Thumb instructions, using the UAL syntax. This is equivalent to a THUMB directive at the start of the source file. 2.75.1 See also • • ARM DUI 0489H ID070912 --arm on page 2-9 ARM, THUMB, THUMBX, CODE16 and CODE32 on page 6-16. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-79 Assembler command line options 2.76 --thumbx This option instructs the assembler to interpret instructions as ThumbEE instructions, using the UAL syntax. This is equivalent to a THUMBX directive at the start of the source file. 2.76.1 See also • ARM DUI 0489H ID070912 ARM, THUMB, THUMBX, CODE16 and CODE32 on page 6-16. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-80 Assembler command line options 2.77 --unaligned_access This option instructs the assembler to set an attribute in the object file to enable the use of unaligned accesses. 2.77.1 See also • ARM DUI 0489H ID070912 --no_unaligned_access on page 2-65. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-81 Assembler command line options 2.78 --unsafe This option enables instructions from differing architectures to be assembled without error. It changes corresponding error messages to warning messages. It also suppresses warnings about operator precedence. 2.78.1 See also • • • ARM DUI 0489H ID070912 --diag_error=tag{, tag} on page 2-25 --diag_warning=tag{, tag} on page 2-29 Binary operators on page 8-22 in Using the Assembler. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-82 Assembler command line options 2.79 --untyped_local_labels This option causes the assembler not to set the Thumb bit for the address of a local label referenced in an LDR pseudo instruction. When this option is not used, if you reference a local label in an LDR pseudo-instruction, and the label is in Thumb code, then the assembler sets the Thumb bit (bit 0) of the address. You can then use the address as the target for a BX or BLX instruction. If you require the actual address of the local label, without the Thumb bit set, then use the --untyped_local_labels option. Note that if you then use the address in a branch (register) instruction, the assembler treats it as an ARM code address, causing the branch to arrive in ARM state, meaning it would interpret this code as ARM instructions. 2.79.1 Example THUMB ... 1 ... LDR r0,=%B1 ; r0 contains the address of local label "1", ; Thumb bit is not set if --untyped_local_labels was used ... 2.79.2 See also • • • ARM DUI 0489H ID070912 LDR pseudo-instruction on page 3-87 B, BL, BX, BLX, and BXJ on page 3-45 Local labels on page 8-12 in Using the Assembler. Copyright © 2010-2012 ARM. All rights reserved. Non-Confidential 2-83 Assembler ...
Purchase answer to see full attachment
User generated content is uploaded by users for the purposes of learning and should be used following Studypool's honor code & terms of service.

Explanation & Answer

At...


Anonymous
Really useful study material!

Studypool
4.7
Trustpilot
4.5
Sitejabber
4.4

Related Tags