格式: _asm_("asm statements": outputs: inputs: registers-modified);
其中,"asm statements"是汇编语句表达式,可以是不止一句
outputs是汇编语句执行完后输出到的寄存器
inputs是输入到某个寄存器
registers-modified则表明了值将会改变的寄存器
outputs,inputs,register-modified都是可选参数,以冒号隔开,且一次以0~9 编
号,故outputs的寄存器是0号,inputs寄存器是1号,往后依次类推。
另外,a,b,c,d分别表示寄存器eax,ebx,ecx,edx
S,D分别表示寄存器esi,edi
r表示任意寄存器
//0表示使用上一个寄存器
如:int main(){
int a1 = 10, b1 = 0;
_asm_("movl % 1,%%eax;\\n\\r"
"movl %% eax, %%ecx;"
:"=a"(b1)
:"b"(a1)
:"%eax");
printf("Result: %d, %d\\n", a1, b1)}
把输出寄存器eax里的内容赋给b1,把a1的内容赋给输入寄存器ebx,会改变的寄存器位eax,主体表示把第一号参数也就是ebx的内容赋给eax,然后把eax的内容赋给ecx,结果为:a1 = 10, b1 = 10
阅读(492) | 评论(0) | 转发(0) |