如何在c代码里内联汇编

本文介绍了在C语言中内联汇编的原因和优势,包括直接访问寄存器和特殊指令。详细讲解了两种内联汇编的方法:不推荐的手写汇编函数和GCC提供的内联汇编宏。并解析了内联汇编的语法,如code-strings、output-list、input-list和overwrite-list的使用。

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

这里写图片描述

一:背景

早期,绝大多数的程序都是用汇编语言写的,甚至是计算机的操作系统OS/360.但是,汇编语言因其抽象程度低,无法提供类型检查。使得编写大型程序捉襟见肘。而且,汇编代码是和机器紧紧联系在一起,使得汇编语言编写的程序移植性差。
那为什么还要把汇编代码内联到c语言里呢?

二:汇编代码的优势

1.访问寄存器的值
2.访问条件码
3.使用一些特殊的指令和特殊的内存地址
……

三:怎么内联汇编

①手写汇编函数(不推荐)

新建一个.c文件里,写入函数,再通过

gcc -S 2.c 

生成汇编文件,再修改汇编文件里的指令

gcc -o prog 1.c 2.s

最后链接两个文件,就ok啦。
eg:

//1.c
#include<stdio.h>
int main()
{
    printf("%d\n",call());
    return 0;
}

//2.c
int call()
{
    return 15;
}

2.c生成的汇编代码:

    .file   "2.c"
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值