1. 前置学习
- 在学习gcc的内嵌汇编语法前,建议先了解C语言函数的调用规范,达到能使用汇编写出可供C语言安全调用的函数 以及 使用汇编安全调用C语言,如下是arm架构的过程调用标准:
AAPCS(Procedure Call Standard for the Arm® Architecture) - 大致了解C语言的编译流程。
2. 官方手册的大致浏览
gcc的内嵌汇编是gcc扩展语法的一部分,应阅读gcc官方文档 第6.47章,下面是目录的截图。

如下是对各个目录的简要说明,建议先看一下官方手册:
6.47.1 基本的内嵌汇编语法,不含操作数(operands),一般用于运行时对上下文没有影响的指令,如nop指令。
6.47.2 扩展的内嵌汇编语法,包含操作数(operands)。
6.47.3 扩展的内嵌汇编中操作数的约束条件。
6.47.4 控制变量/函数编译后(汇编文件中)符号命名的语法。
6.47.5 指定变量与固定寄存器绑定的方法及注意事项。
6.47.6 gcc在编译阶段获得内嵌汇编大小的机制。
3. gcc内嵌汇编语法速览
本章会提供一些内嵌汇编的示例,有兴趣可以先搜一些gcc内嵌汇编的语法学习一下,本文不会详细介绍基础语法。
3.1 Basic Asm - 不带操作数的内嵌汇编语法
- 语法描述

- 示例


3.2 Extended Asm - 带有C表达式操作数的内嵌汇编指令
-
语法描述

-
示例




3.3 控制c语言中的符号编译为汇编代码后的名字
int foo asm ("myfoo") = 2

最低0.47元/天 解锁文章
1736






