 RealView Compiler Reference Guide |
|
Technical Support On-Line Manuals RealView Compiler Reference Guide Preface Introduction Compiler Command-line Options Language Extensions Compiler-specific Features Keywords and operators __align __alignof__ __ALIGNOF__ __asm __forceinline __global_reg __inline __int64 __INTADDR__ __irq __packed __pure __smc __softfp __svc __svc_indirect __svc_indirect_r7 __value_in_regs __weak __writeonly __declspec attributes __declspec(dllexport) __declspec(dllimport) __declspec(noinline) __declspec(noreturn) __declspec(nothrow) __declspec(notshared) __declspec(thread) Function attributes __attribute__((alias)) __attribute__((always_inline)) __attribute__((const)) __attribute__((deprecated)) __attribute__((malloc)) __attribute__((noinline)) __attribute__((noreturn)) __attribute__((pure)) __attribute__((section)) __attribute__((unused)) __attribute__((used)) __attribute__((weak)) Type attributes __attribute__((aligned)) __attribute((packed)) __attribute__((transparent_union)) Variable attributes __attribute__((alias)) __attribute__((at(address))) __attribute__((aligned)) __attribute__((deprecated)) __attribute__((packed)) __attribute__((section)) __attribute__((transparent_union)) __attribute__((unused)) __attribute__((used)) __attribute__((weak)) __attribute__((zero_init)) Pragmas #pragma [no_]anon_unions #pragma arm #pragma arm section [section_sort_list] #pragma diag_default tag[,tag,...] #pragma diag_error tag[,tag,...] #pragma diag_remark tag[,tag,...] #pragma diag_suppress tag[,tag,...] #pragma diag_warning tag[, tag, ...] #pragma [no_]exceptions_unwind #pragma hdrstop #pragma import symbol_name #pragma [no_]inline #pragma no_pch #pragma Onum #pragma once #pragma Ospace #pragma Otime #pragma pop #pragma push #pragma [no_]softfp_linkage #pragma unroll [(n)] #pragma unroll_completely #pragma thumb Instruction intrinsics __breakpoint __builtin_clz __builtin_constant_p __builtin_expect __builtin_frame_address __builtin_return_address __builtin_popcount __cdp __clrex __clz __current_pc __current_sp __disable_fiq __disable_irq __enable_fiq __enable_irq __fabs __fabsf __force_stores __ldrex __ldrt __memory_changed __nop __pld __pli __qadd __qdbl __qsub __rbit __rev __return_address __ror __schedule_barrier __semihost __sev __sqrt __sqrtf __ssat __strex __strt __swp __usat __wfe __wfi __yield ARMv6 SIMD intrinsics ETSI basic operations C55x intrinsics Named register variables Compiler predefines Predefined macros Function names C and C++ Implementation Details Via File Syntax Standard C Implementation Definition Standard C++ Implementation Definition C and C++ Compiler Implementation Limits | Named register variables4.7.49. Named register variablesThe compiler enables you to access registers of an ARM architecture‑based processor using named register variables. Named register variables are supported:
register type var-name __asm(reg);
Where: typeis the type of the named register variable. Any type of the same size as the register being named can be used in the declaration of a named register variable. The type can be a structure, but note that bitfield layout is sensitive to endianness. var-nameis the name of the named register variable. regis a character string denoting the name of a register on an ARM architecture‑based processor. Registers available for use with named register variables on ARM architecture‑based processors are shown in Table 4.16. Table 4.16. Named registers available on ARM architecture‑based processors | Register | Character string for __asm |
|---|
CPSR | "cpsr" or "apsr"
| SPSR | "spsr"
| r0 to r12 | "r0" to "r12" | r13 or sp | "r13" or "sp" | r14 or lr | "r14" or "lr" | r15 or pc | "r15" or "pc". |
On targets with a VFP, the registers of Table 4.17 are also available for use with named register variables. Table 4.17. Named registers available on targets with a VFP | Register | Character string for __asm |
|---|
FPSID | "fpsid" | FPSCR | "fpscr" | FPEXC | "fpexc" |
void foo(void)
{
register int foo __asm("r0");
}
In this example, foo is declared as a named register variable for the register r0. |
|