Linux 嵌入式汇编
在Linux内核编程中需要完成大量与具体硬件相关的操作,由于C语言无法直接对硬件操作。GCC提供了嵌入式汇编的功能,即可以在C语言代码中内嵌汇编语言完成对硬件的直接操作。
下面先给出一个例子:
内嵌汇编格式:
asm( 汇编语句模板
:输出部分
:输入部分
:破坏描述
)
内嵌汇编格式总共4个部分:汇编语句、输出部分、输入部分、破坏描述。各个部分之间用英文中的分号(colon)隔开。
汇编语句模板部分必不可少
,其它3个部分可选。关键字asm,是告诉GCC编译器后面括号内的代码是内嵌汇编。
汇编语句模板
:
内嵌汇编语句模板是由汇编指令序列组成,这些汇编指令之间需要使用分隔符(delimiter)如:“;”、“\n”或者“\n\t”分开。除
了常规汇编中的操作数(立即数、寄存器、变量)之外,内嵌汇编中的汇编指令的操作数还可以是占位符,操作数占位符最多有10个,依次用%0,%1,%2,%3,···%9来表示,他们与操作数(包括输出列表、输入列表)出现的次序依次对应,代表相应的操作数。比如说示例程序中的占位符%0代表操作数output,占位符%1代表操作数inpu