[编译环境][gcc]下的内联汇编

本文详细介绍了汇编语言中各种寄存器的使用规则,包括通用寄存器、浮点寄存器及特定操作符的意义,并解释了不同场景下寄存器的选择策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束规则


约束输入/输出描述
aI/O使用%eax/%ax/%al。
bI/O使用%ebx/%bx/%bl。
cI/O使用%ecx/%cx/%cl。
dI/O使用%edx/%dx/%dl。
DI/O使用%edi/%di。
SI/O使用%esi/%si。
AI/O把%eax与%edx组合成一个64位的整数值。
rI/O使用一个通用寄存器,由GCC在%eax/ %ax/ %al、%ebx/ %bx/ %bl、%ecx/ %cx /%cl、%edx/%dx/%dl中选取一个GCC认为是合适的。
qI/O使用一个通用寄存器,与r的意义相同。与r相比,q更好一些。
gI/O使用寄存器或内存地址。
mI/O使用内存地址。
oI/O表示使用一个内存位置的偏移量。
VI/O表示仅仅使用一个直接内存位置。
iI/O表示使用一个整数类型的立即数。
nI/O表示使用一个带有已知整数值的立即数。
FI/O表示使用一个浮点类型的立即数。
fI/O表示使用浮点寄存器。
tI/O表示使用第一个浮点寄存器。
uI/O表示使用第二个浮点寄存器。
=:O表示此Output操作表达式是只写的。
+:O表示此Output操作表达式是可读可写的。
&:O表示此Output操作表达式独占为其指定的寄存器。
%:I表示此Input操作表达式中的C/C++表达式可以与下一个Input操作表达式中的C/C++表达式互换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值