gcc嵌入汇编

    具有输入和输出参数的嵌入汇编语句的基本格式为:

    asm(

    "汇编语句“

    :输出寄存器列表

    :输入寄存器列表

    :会被修改的寄存器列表

    );

    asm是嵌入汇编的关键字,“汇编语句”是写汇编指令的地方,“输出寄存器”是指这段嵌入汇编执行完之后,哪些寄存器用于存放输出数据,这些寄存会会分别对应一C语言表达式值或一个内存地址;“输入寄存器”表示在开始执行汇编代码时,这里制定的一些寄存器中应存放的输入值,它们也分别对应一C变量或常数值。“会被修改的寄存器”表示已对其中列出的寄存器中的值进行了改动,编译器不能再依赖于它原先对这些寄存器加载的值。

    以下的示例小程序会对每个输入的值加16后输出原值和结果。

#include<stdio.h>
int test(int x)
{
	int o;
	asm  volatile("mov %1,%%eax \n"
	"add $0x10,%%eax\n"
	"mov %%eax,%0\n"
	: "=r" (o)
	: "r" (x)
	: "%eax","%ebx"
	);
	printf("%d %d\n",x,o);
}

int main()
{
	int d;
	while(scanf("%d",&d))
	{
		test(d);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值