约束规则
| 约束 | 输入/输出 | 描述 |
|---|---|---|
| a | I/O | 使用%eax/%ax/%al。 |
| b | I/O | 使用%ebx/%bx/%bl。 |
| c | I/O | 使用%ecx/%cx/%cl。 |
| d | I/O | 使用%edx/%dx/%dl。 |
| D | I/O | 使用%edi/%di。 |
| S | I/O | 使用%esi/%si。 |
| A | I/O | 把%eax与%edx组合成一个64位的整数值。 |
| r | I/O | 使用一个通用寄存器,由GCC在%eax/ %ax/ %al、%ebx/ %bx/ %bl、%ecx/ %cx /%cl、%edx/%dx/%dl中选取一个GCC认为是合适的。 |
| q | I/O | 使用一个通用寄存器,与r的意义相同。与r相比,q更好一些。 |
| g | I/O | 使用寄存器或内存地址。 |
| m | I/O | 使用内存地址。 |
| o | I/O | 表示使用一个内存位置的偏移量。 |
| V | I/O | 表示仅仅使用一个直接内存位置。 |
| i | I/O | 表示使用一个整数类型的立即数。 |
| n | I/O | 表示使用一个带有已知整数值的立即数。 |
| F | I/O | 表示使用一个浮点类型的立即数。 |
| f | I/O | 表示使用浮点寄存器。 |
| t | I/O | 表示使用第一个浮点寄存器。 |
| u | I/O | 表示使用第二个浮点寄存器。 |
| =: | O | 表示此Output操作表达式是只写的。 |
| +: | O | 表示此Output操作表达式是可读可写的。 |
| &: | O | 表示此Output操作表达式独占为其指定的寄存器。 |
| %: | I | 表示此Input操作表达式中的C/C++表达式可以与下一个Input操作表达式中的C/C++表达式互换。 |
本文详细介绍了汇编语言中各种寄存器的使用规则,包括通用寄存器、浮点寄存器及特定操作符的意义,并解释了不同场景下寄存器的选择策略。
1302

被折叠的 条评论
为什么被折叠?



