GCC 内联汇编 格式及代码

本文通过一个简单的C程序示例,展示了如何在GCC中使用内联汇编进行操作。程序中,内联汇编用于交换两个整数变量a和b的值,通过`__asm__ __volatile__`关键字插入汇编代码,并使用`%0`, `%2`等占位符指定变量。在汇编代码块中,声明了`"=r"(a)`和`"=r"(b)`作为输出,`"r"(a)`和`"r"(b)`作为输入,以及`"%eax"`表示eax寄存器会被修改。最终,程序输出交换后的变量值。" 134621788,1299208,ArcGIS Pro人口密度分析:点密度与核密度,"['arcgis', '地理信息系统', '人口密度分析']
摘要由CSDN通过智能技术生成

#include <stdio.h>

int main()
{
    int a = 100, b = 0;
    __asm__ __volatile__( "movl %3, %%eax;/n/r"
          "movl %%eax, %0;/n/r"                                             /* %0 用来表示 输出的a变量  对应声明:"=r"(a)*/
          "movl %2, %%eax;/n/r"                                             /* %2用来表示 输入的a变量  对应声明:"r"(a)*/
                          "movl %%eax, %0;/n/r"                         
                          :"=r"(a),"=r"(b)                                             /*  声明变量 a ,b 为输出,程序段结束后,该值将变更*/
                          :"r"(a),"r"(b)                                                  /*  声明变量 a ,b 为输入,用来在程序中输入,在此也可以不用再次声明这两个变量  在此仅属于示例说明用输入功能的*/
                          :"%eax");                                                      /*  声明eax将变被更*/
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值