📄 machine-constraints.html
字号:
(for using immediates in 64-bit x86-64 instructions) <br><dt><code>G</code> <dd>Standard 80387 floating point constant</dl> <br><dt><em>Intel IA-64--</em><code>ia64.h</code><em></em> <dd> <dl><dt><code>a</code> <dd>General register <code>r0</code> to <code>r3</code> for <code>addl</code> instruction <br><dt><code>b</code> <dd>Branch register <br><dt><code>c</code> <dd>Predicate register (<code>c</code> as in "conditional") <br><dt><code>d</code> <dd>Application register residing in M-unit <br><dt><code>e</code> <dd>Application register residing in I-unit <br><dt><code>f</code> <dd>Floating-point register <br><dt><code>m</code> <dd>Memory operand. Remember that <code>m</code> allows postincrement and postdecrement whichrequire printing with <code>%Pn</code> on IA-64. Use <code>S</code> to disallow postincrement and postdecrement. <br><dt><code>G</code> <dd>Floating-point constant 0.0 or 1.0 <br><dt><code>I</code> <dd>14-bit signed integer constant <br><dt><code>J</code> <dd>22-bit signed integer constant <br><dt><code>K</code> <dd>8-bit signed integer constant for logical instructions <br><dt><code>L</code> <dd>8-bit adjusted signed integer constant for compare pseudo-ops <br><dt><code>M</code> <dd>6-bit unsigned integer constant for shift counts <br><dt><code>N</code> <dd>9-bit signed integer constant for load and store postincrements <br><dt><code>O</code> <dd>The constant zero <br><dt><code>P</code> <dd>0 or -1 for <code>dep</code> instruction <br><dt><code>Q</code> <dd>Non-volatile memory for floating-point loads and stores <br><dt><code>R</code> <dd>Integer constant in the range 1 to 4 for <code>shladd</code> instruction <br><dt><code>S</code> <dd>Memory operand except postincrement and postdecrement</dl> <br><dt><em>FRV--</em><code>frv.h</code><em></em> <dd> <dl><dt><code>a</code> <dd>Register in the class <code>ACC_REGS</code> (<code>acc0</code> to <code>acc7</code>). <br><dt><code>b</code> <dd>Register in the class <code>EVEN_ACC_REGS</code> (<code>acc0</code> to <code>acc7</code>). <br><dt><code>c</code> <dd>Register in the class <code>CC_REGS</code> (<code>fcc0</code> to <code>fcc3</code> and<code>icc0</code> to <code>icc3</code>). <br><dt><code>d</code> <dd>Register in the class <code>GPR_REGS</code> (<code>gr0</code> to <code>gr63</code>). <br><dt><code>e</code> <dd>Register in the class <code>EVEN_REGS</code> (<code>gr0</code> to <code>gr63</code>). Odd registers are excluded not in the class but through the use of a machinemode larger than 4 bytes. <br><dt><code>f</code> <dd>Register in the class <code>FPR_REGS</code> (<code>fr0</code> to <code>fr63</code>). <br><dt><code>h</code> <dd>Register in the class <code>FEVEN_REGS</code> (<code>fr0</code> to <code>fr63</code>). Odd registers are excluded not in the class but through the use of a machinemode larger than 4 bytes. <br><dt><code>l</code> <dd>Register in the class <code>LR_REG</code> (the <code>lr</code> register). <br><dt><code>q</code> <dd>Register in the class <code>QUAD_REGS</code> (<code>gr2</code> to <code>gr63</code>). Register numbers not divisible by 4 are excluded not in the class but throughthe use of a machine mode larger than 8 bytes. <br><dt><code>t</code> <dd>Register in the class <code>ICC_REGS</code> (<code>icc0</code> to <code>icc3</code>). <br><dt><code>u</code> <dd>Register in the class <code>FCC_REGS</code> (<code>fcc0</code> to <code>fcc3</code>). <br><dt><code>v</code> <dd>Register in the class <code>ICR_REGS</code> (<code>cc4</code> to <code>cc7</code>). <br><dt><code>w</code> <dd>Register in the class <code>FCR_REGS</code> (<code>cc0</code> to <code>cc3</code>). <br><dt><code>x</code> <dd>Register in the class <code>QUAD_FPR_REGS</code> (<code>fr0</code> to <code>fr63</code>). Register numbers not divisible by 4 are excluded not in the class but throughthe use of a machine mode larger than 8 bytes. <br><dt><code>z</code> <dd>Register in the class <code>SPR_REGS</code> (<code>lcr</code> and <code>lr</code>). <br><dt><code>A</code> <dd>Register in the class <code>QUAD_ACC_REGS</code> (<code>acc0</code> to <code>acc7</code>). <br><dt><code>B</code> <dd>Register in the class <code>ACCG_REGS</code> (<code>accg0</code> to <code>accg7</code>). <br><dt><code>C</code> <dd>Register in the class <code>CR_REGS</code> (<code>cc0</code> to <code>cc7</code>). <br><dt><code>G</code> <dd>Floating point constant zero <br><dt><code>I</code> <dd>6-bit signed integer constant <br><dt><code>J</code> <dd>10-bit signed integer constant <br><dt><code>L</code> <dd>16-bit signed integer constant <br><dt><code>M</code> <dd>16-bit unsigned integer constant <br><dt><code>N</code> <dd>12-bit signed integer constant that is negative--i.e. in therange of -2048 to -1 <br><dt><code>O</code> <dd>Constant zero <br><dt><code>P</code> <dd>12-bit signed integer constant that is greater than zero--i.e. in therange of 1 to 2047. </dl> <br><dt><em>IP2K--</em><code>ip2k.h</code><em></em> <dd> <dl><dt><code>a</code> <dd><code>DP</code> or <code>IP</code> registers (general address) <br><dt><code>f</code> <dd><code>IP</code> register <br><dt><code>j</code> <dd><code>IPL</code> register <br><dt><code>k</code> <dd><code>IPH</code> register <br><dt><code>b</code> <dd><code>DP</code> register <br><dt><code>y</code> <dd><code>DPH</code> register <br><dt><code>z</code> <dd><code>DPL</code> register <br><dt><code>q</code> <dd><code>SP</code> register <br><dt><code>c</code> <dd><code>DP</code> or <code>SP</code> registers (offsettable address) <br><dt><code>d</code> <dd>Non-pointer registers (not <code>SP</code>, <code>DP</code>, <code>IP</code>) <br><dt><code>u</code> <dd>Non-SP registers (everything except <code>SP</code>) <br><dt><code>R</code> <dd>Indirect through <code>IP</code> - Avoid this except for <code>QImode</code>, since wecan't access extra bytes <br><dt><code>S</code> <dd>Indirect through <code>SP</code> or <code>DP</code> with short displacement (0..127) <br><dt><code>T</code> <dd>Data-section immediate value <br><dt><code>I</code> <dd>Integers from -255 to -1 <br><dt><code>J</code> <dd>Integers from 0 to 7--valid bit number in a register <br><dt><code>K</code> <dd>Integers from 0 to 127--valid displacement for addressing mode <br><dt><code>L</code> <dd>Integers from 1 to 127 <br><dt><code>M</code> <dd>Integer -1 <br><dt><code>N</code> <dd>Integer 1 <br><dt><code>O</code> <dd>Zero <br><dt><code>P</code> <dd>Integers from 0 to 255</dl> <br><dt><em>MIPS--</em><code>mips.h</code><em></em> <dd> <dl><dt><code>d</code> <dd>General-purpose integer register <br><dt><code>f</code> <dd>Floating-point register (if available) <br><dt><code>h</code> <dd><code>Hi</code> register <br><dt><code>l</code> <dd><code>Lo</code> register <br><dt><code>x</code> <dd><code>Hi</code> or <code>Lo</code> register <br><dt><code>y</code> <dd>General-purpose integer register <br><dt><code>z</code> <dd>Floating-point status register <br><dt><code>I</code> <dd>Signed 16-bit constant (for arithmetic instructions) <br><dt><code>J</code> <dd>Zero <br><dt><code>K</code> <dd>Zero-extended 16-bit constant (for logic instructions) <br><dt><code>L</code> <dd>Constant with low 16 bits zero (can be loaded with <code>lui</code>) <br><dt><code>M</code> <dd>32-bit constant which requires two instructions to load (a constantwhich is not <code>I</code>, <code>K</code>, or <code>L</code>) <br><dt><code>N</code> <dd>Negative 16-bit constant <br><dt><code>O</code> <dd>Exact power of two <br><dt><code>P</code> <dd>Positive 16-bit constant <br><dt><code>G</code> <dd>Floating point zero <br><dt><code>Q</code> <dd>Memory reference that can be loaded with more than one instruction(<code>m</code> is preferable for <code>asm</code> statements) <br><dt><code>R</code> <dd>Memory reference that can be loaded with one instruction(<code>m</code> is preferable for <code>asm</code> statements) <br><dt><code>S</code> <dd>Memory reference in external OSF/rose PIC format(<code>m</code> is preferable for <code>asm</code> statements)</dl> <br><dt><em>Motorola 680x0--</em><code>m68k.h</code><em></em> <dd> <dl><dt><code>a</code> <dd>Address register <br><dt><code>d</code> <dd>Data register <br><dt><code>f</code> <dd>68881 floating-point register, if available <br><dt><code>I</code> <dd>Integer in the range 1 to 8 <br><dt><code>J</code> <dd>16-bit signed number <br><dt><code>K</code> <dd>Signed number whose magnitude is greater than 0x80 <br><dt><code>L</code> <dd>Integer in the range -8 to -1 <br><dt><code>M</code> <dd>Signed number whose magnitude is greater than 0x100 <br><dt><code>G</code> <dd>Floating point constant that is not a 68881 constant</dl> <br><dt><em>Motorola 68HC11 & 68HC12 families--</em><code>m68hc11.h</code><em></em> <dd> <dl><dt><code>a</code> <dd>Register 'a' <br><dt><code>b</code> <dd>Register 'b' <br><dt><code>d</code> <dd>Register 'd' <br><dt><code>q</code> <dd>An 8-bit register <br><dt><code>t</code> <dd>Temporary soft register _.tmp <br><dt><code>u</code> <dd>A soft register _.d1 to _.d31 <br><dt><code>w</code> <dd>Stack pointer register <br><dt><code>x</code> <dd>Register 'x' <br><dt><code>y</code> <dd>Register 'y' <br><dt><code>z</code> <dd>Pseudo register 'z' (replaced by 'x' or 'y' at the end) <br><dt><code>A</code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -