混合编程的程序段是

混合编程的程序段是,第1张

答,混合编程的程序段是,目前几乎所有硬件平台的启动程序都是用汇编语言和C语言来实现的,所以这两种必然是可以混合编程的。

几乎所有的 *** 作系统都是基于C语言实现的,现代 *** 作系统如Linux和Windows都是提供C++开发环境的,C和C++本身就是父子两,混合编程是理所当然的支持。

更高级的如java语言,也支持通过JNI来调用C或C++的接口。

C语言在实际应用中,为了完成某种特定的功能,或需要缩短程序的运行时间,或需要对硬件进行直接 *** 作,或需要利用 *** 作系统的某些功能模块,这时就会使用到汇编语言程序,即要采用C语言与汇编语言的混合编程技术实现。

C与汇编语言的混合编程方法,为C语言应用开发人员提供方便。汇编语言开发的程序代码短、执行速度快,而C语言是应用广泛的面向过程的开发语言。通过给出混合编程的方法、约定规则以及实现的具体步骤,说明了混合编程需要注意的问题,最后给出了相应的实例。 

扩展资料:

汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件 *** 作的场合。

参考资料来源:百度百科-汇编语言

在C++Builder中调用Matlab工具箱函数,有两种实现方式。一种是基于Matlab环境支持,通过必要的设置实现;笔者在本刊上曾撰文对这种方式进行了专门的阐述。另一种则是完全脱离Matlab环境,通过动态连接库方式实现对Matlab工具箱函数的调用,这可以通过一种开发平台Mediva来实现。相对来说,前者的限制因素较多,而后者则较为方便灵活。

一、Mediva软件平台

Mediva是Mathtools公司推出的一种Matlab编译开发软件平台,提供对Matlab程序文件(M文件)的解释执行和开发环境支持。该软件有为Borland C++、Visual Basic和Dephi等编程语言开发的不同版本,目前其版本已经到了4.5版。软件大小仅6.5M,可以通过访问其站点www.mathtools.com免费下载试用一个月。 Mediva软件平台本身的功能相当强大,提供近千个Matlab的基本功能函数,通过必要的设置,就可以直接实现与C++的混合编程,而不必再依赖Matlab;同时,Mediva还提供编译转换功能,能够将Matlab函数或编写的Matlab程序转换为C++形式的DLL,从而实现脱离Matlab环境对Matlab函数和过程的有效调用,这样就有可能实现对Matlab强大的工具箱函数的利用。

Mediva的缺点是C++与Matlab混合编写的应用软件必须携带必要的DLL,从而增大了软件的体积(约4M),同时也不能对所有的Matlab函数提供支持,例如采用类库进行设计的部分函数。但尽管如此,对于控制系统计算机设计、分析的工作来说,Mediva仍不失为一个好的工具。

由于利用Mediva将Matlab工具箱函数转换成DLL的内容较多,限于篇幅本文在此仅给出对Matlab函数直接调用的实现,而将另撰文阐述DLL的实现。

二、C++Builder直接调用Matlab函数

本文假设已经安装了Mediva软件或已经得到必要的两个动态连接库mdv4300.dll和ago4300.dll。

Mediva提供的近千个Matlab基本功能函数,都可以在C++Builder中直接调用。这些函数包括基本的 *** 作、命令、I/O、线性代数、位图、控制等,基本上可以满足我们的一般需要。当然其的优点就是可以直接在C++Buider中直接调用而不必考虑安装庞大的Matlab。

其实现方式和步骤如下:

1.Lib文件的生成

在Dos下用C++Builder中的Implib.exe,通过如下命令生成mdv4300.lib: implib mdv4300.lib mdv4300.dll

将上述两个DLL文件和此Lib文件拷贝到当前目录下。

2.实现与Matlab的混合编程

Matlab.h包含了Mediva中所有类型、常量、函数的说明和定义,必须将此头文件放于程序的第一行。Mediva给出的Matlab函数形式并不特殊,如绘线函数Plot,在Mediva中说明为:Mm DLLI plot(cMm varargin);varargin与Matlab 中的意义是一样的,与输入变量的个数相对应。所有可以直接使用的函数都在Matlib.h头文件中定义,而在mdv4300.dll中实现。

但在C++Builder中使用Mediva提供的Matlab函数的格式,与Matlab编程稍有不同,这主要体现在C++中必须进行必要的说明上。例如我们要用绘线函数Plot来绘制数组x[100]的红色图线。在Matlab中调用为Plot(x,'r');在C++中调用则为:Plot(CL(x),TM("r")),其中CL是一个关键字,是多变量输入时所必须使用的,用以指明调用的变量;而TM则指明,这是一个字符。

下面我们给出一个示例程序,其功能是对一个1024点的输入数组进行FFT 变换,并绘制变换后频谱实部的火柴杆图,最后将原数据和变换后的数据写入数据文件中。

#include "matlib.h"

//必须包含的头文件

#include vcl.h >

#pragma hdrstop

#include "TryMatcomU.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1

__fastcall TForm1::TForm1(Tcomponent* Owner)

: Tform(Owner)

{

}

void __fastcall TForm1::Button1Click(Tobject *Sender)

{

int k=0

initM(MATCOM_VERSION) //必须进行的初始化

Mm cur1,cur2 //定义变量

cur1=zeros(128) cur2=zeros(128) //变量初始化

for(k=1k<=128k++)

cur1.r(k)=randM() //生成一个随机数列

figure(1)

plot(cur1)//图形显示该数列

cur2=fft(cur1,128) //做128点fft变换

figure(2)//绘制fft变换后实部的火柴杆图,注意此处多变量输入的格式

stem((CL(cur1),real(cur2),TM("r")))

fid=fopen(filename,mode,format) opens

exitM() //退出调用

}

如果完全使用C++来实现本程序的工作,其代码将超过300行!由此可以看出,C++Builder与Matlab函数的混合编程可以给我们带来多么大的方便!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11416651.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存