mirror of https://github.com/rust-lang/rfcs.git
Add rationale for register names as string literals
This commit is contained in:
parent
88d4f21c07
commit
df8388faad
|
@ -397,7 +397,7 @@ Several types of operands are supported:
|
|||
|
||||
## Register operands
|
||||
|
||||
Input and output operands can be specified either as an explicit register or as a register class from which the register allocator can select a register. Explicit registers are specified as string literals (e.g. `"eax"`) while register classes are specified as identifiers (e.g. `reg`).
|
||||
Input and output operands can be specified either as an explicit register or as a register class from which the register allocator can select a register. Explicit registers are specified as string literals (e.g. `"eax"`) while register classes are specified as identifiers (e.g. `reg`). Using string literals for register names enables support for architectures that use special characters in register names, such as MIPS (`$0`, `$1`, etc).
|
||||
|
||||
Note that explicit registers treat register aliases (e.g. `r14` vs `lr` on ARM) and smaller views of a register (e.g. `eax` vs `rax`) as equivalent to the base register. It is a compile-time error to use the same explicit register for two input operands or two output operands. Additionally, it is also a compile-time error to use overlapping registers (e.g. ARM VFP) in input operands or in output operands.
|
||||
|
||||
|
|
Loading…
Reference in New Issue