C语言内嵌汇编

Python020

C语言内嵌汇编,第1张

在调试联盛德W800芯片代码时,看到了下面的代码实现,记录下C语言内嵌汇编语言的实现方式。部分代码如下:

该函数实现功能:将入参newMask的值写入到psr寄存器,用于恢复现场。

代码下载路径:http://www.winnermicro.com/html/1/156/158/558.html

__asm__ (

汇编语句部分

:输出部分

:输入部分

:破坏描述部分

)

1)C内嵌汇编以关键字 __asm__ 或 asm 开始。如果使用 volatile 关键字,则表示告诉编译器不优化后续的代码。

2) 汇编语句部分:可以包含多条汇编语句,每条语句之间用“ ”或“;”,例:

注:汇编语句中的操作数可以使用占位符引用C语言变量,名称如下:%0,%1,…。

2) 输出部分:在汇编语言中被修改的C变量

3) 输入部分:作为参数输入到汇编语言中的C变量

注:输出和输入部分是针对汇编语句部分的输入和输出参数而言。例:如果汇编语言使用变量设置寄存器,则用输入部分;如果汇编语言从寄存器读取值,保存到变量,则用输出部分。

4) 破坏描述部分:通知编译器使用了哪些寄存器或内存。

5) 每个部分之间用”:”隔开。汇编语句部分必不可少,其他部分可以省略。例: asm("nop") ,实现空操作。

区别如下:

(1)两者编译组成不同。汇编语言是将由0、1组成的机器语言用具有简单语义的英文代码表示,而C语言不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等。

(2)两者被计算机识别的路径不同。汇编语言通常用于对硬件的直接操控。而且C语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。

(3)两者用处不同。汇编语言通常用在程序中最核心的、控制硬件的代码,一方面是安全,另一方面提高运行速度。而C语言通常用在计算机外用功能上。

(4)两者学习难易程度不同。汇编语言所需要的编绘知识很多很复杂,经常被开发者使用。而C语言是一门很简单方便的语言,编程者也就不需要有太多的专业知识。

计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。计算机语言从低级到高级可以分为:

(1)机器语言,即由0、1组成的机器硬件可以识别的语言;

(2)低级语言,即汇编语言

(3)中级语言,如C语言

(4)高级语言,如C++,JAVA,C#等。

扩展资料:

如今通用的编程语言有两种形式:汇编语言和高级语言。

汇编语言和机器语言实质是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,容易识别和记忆。源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。

高级语言主要是相对于低级语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类和编译类。

参考资料:计算机语言_百度百科