谈谈Visual C++ 和汇编语言混合编程上的优化


 1   Visual C++ 调节汇编表达的长用方式搭配和程序编写的要点是解决方法好高阶表达与汇编表达的端口状况, 可用于俩种形式: 十是选择植入式汇编, 即在高等级语音的语句中同时运行汇编语句, 种技巧十分简捷准确,但用途稍弱; 另外一个种方案是独自程序编写,都生产自己的阶段目标压缩文件,第二步经途无线连接, 建成一位完整版的源程序 。运用类似这些步骤特别具备灵活性高同时还具有着不强的用途, 其关键所在是如何才能化解好汇编语种与高层语种的统计资料通信 。今天就以在凌阳 16 位片式机SPCE061A 中[ 2],选取Visual C++ 与汇编语言英文经济独立程序设计的手段保证结合程序设计的明确办法并说出典例 。

1. 1   VC++ 中嵌到汇编语句的方法步骤

植入式汇编又说行内汇编, Visual C++ 提高了内嵌式汇编技能, 限制在VC++ 源过程中随便嵌入汇编言语命令的语句, 还可以一直仿问VC++ 语言英语程度中构成的常量、 变量类型和函数值,而不必注意这两种方法相互之间的接口类型,然后尽量不要了汇编文学语言和VC++ 语言表达间有难度的电源接口问題, 提供了软件的设计转化率 。

置入汇编语气控制台命令选用- - asm 最为关键的字, 植入汇编各式: - - asm{汇编指令} , 使用花括号的汇编程序流程图语言程序流程图段状态 。具体实施选用基本使用每种具体方法, 第一个种办法: - - asm{汇java开发序段} ,有以下几点右图: - - asm

{

  mov ea x, 5h

  mov ec x, 7h

  add eax, ecx

}

另一个种的方法:每段条汇编语句前加入/ - - asm0记号,各式: - - asm 汇编语句,一下随时:

- - asm mov ea x, 5h

- - asm mov ec x, 7h

- - asm add eax, ec x

在Visual C++ 编译场景中VC++ 语言英语表达方式源程序内含放入式汇编语言英语表达方式语句时, 编译器最先将VC++ 二维码的源源程序( . cpp)编译成汇编计算机语言源过程( . asm) 。接下来激活码汇源程序序, Turbo Assembler 将生产的汇编语言表达方式源资料编译成学习目标资料( . obj) , 最后的解锁Tlink 将目标值文件名称格式跳转成可下达文件名称格式( . exe) 。Visual C++ 会苹果支持置于汇编的方法, 不要经济独立的汇编软件和单独的连结步凑 。所以咧Visual C++ 中镶入汇编比Tur -bo C 中添加汇编参与编译连接方式更是为轻松快捷 。

以下的是在VC++ 中读取汇源程序序的实列:

P P Visual C++ 言语主方程main ( )

void F- Sub ( void) ; P P 声明公告要加载的变量的变量原来,此方程无性能参数交换

intmain ( void) {

    while ( 1)

      F- Sub ( ) ; P P 加载汇编数学函数

return 0;

}

P P 汇编子函数公式F- Sub( )

. CODE

. PUBL IC- F- Sub

- F- Sub:

NOP

RETF

以内应用程序在凌阳公司出具的整合建设学习爱游戏(ayx)下编译连入后就能工作 。

1. 2   所采用板块赋值的的方式

运用信息模块都会进行方式, 要互相配合定名、 资源调用、 性能指标传送和取到等完成約定 。

( 1) 选取一直的传参协商

Visual C++ 语言表达方式还具有八种都会进行协商: - cdecl,- stdcall和- fastcal l 。MASM 汇编文字灵活运用/ 語言种类0知道传参合同范本和取名条约, 能够的言语方式有:C, SYSCALL, STDCALL,PASCAL, BASIC 和FOR TRAN 。Visual C++ 与汇编語言结合c语言编程基本用堆栈来因素传承,都会进行合同协议直接决定借助堆栈的的办法和命名大全约定的, 双方要同一, 一般来说Visual C++ 主要采用- cdecl加载合同范本, MASN 汇编语种适用Visual C++ 语言表达都会进行合同书 。

( 2) 通道数据和调用数据的签订

不论什么社么整数种类对其进行基本参数获取时都初始化成32位,Visual C++ 中没能远、 近读取之分, 全部读取全是 32 位的偏差详细地址, 那些的地点运作也也是32位摆动注册地址, 在堆栈中占4 个字节 。图1 列出了采用了Visual C++ 语气读取商议的堆栈关心图  。规格刷新页面时,这对于高于乘以32 位的数据报告延伸为32 位,停放在EAX 寄存器中返还; 4- 8 个字节的跳到值在家中存储在EDX, EAX 寄存器中回到;更具字节参数则将她们的具体位置表针放存在EAX 中回到 。

( 3) 证明函共用涵数名和字段名

对Visual C++ 和汇编语言表达采用的公用设施函数和函数应该是参与声明公告, 同时标识牌符一般一直, C++ 编程语言对标学习识符区别符号的多少写,而汇编不识别面积大大写字母 。在Visual C++ 语言源程序中, 采用了extern / C0{ }对所资源调用的指数函数和数据付出说 。说组织形式下面:对函数值的说明书怎么写: extern / C0 { 跳回值方式 资源调用协议书 变量名号(因素款式表) ; }对变量类型的阐述: extern / C0 { 数据类型、数据名; }汇编语文程序流程图中供冗余用到的标示符需要标示P UBLIC 的使用属性,操作内部图案符应有用 e xtern 详细说明 。

1. 3   摸块获取搭配编写程序的确保进行

选取组件赋值原则来混和程序语言通常继续执行的方法流程下列: ( 1)树立Visual C++ 源软件( . cpp) ; ( 2)搭建汇编语言学源子程序, 并把汇编语言表达方式汇编成. obj 文件目录;( 3)建立联系工作文件夹. prj, 将Visual C++ 源软件和. obj档案放至该水利工程活动; ( 4) 对工程建设相关文件做编译、 相连, 转换可执行程序文件名称. exe 。

在与Visual C++ 混和程序编写的汇编語言环节中,编写程序环镜是32位的,该特别注意与16 位MS -DOS 周围条件的区分 。在这般周围条件下的寄存器是32位的, (下转第160页)(上接第 124 页)对此汇编语气步骤存取堆栈肯定用32 位寄存器EBP 通过对寻址, 而非所采用 BP 。汇编计算机语言要学会简化段表述的后缀名大概主要包括flat 形式 , 和汇编时采用了选项卡P coff, ML命令提示符的选择项P coff 会使出现的. obj 压缩文件用于32位的图片格式 。

2   在 Visual C++ 中调节汇编语言学的

其这几种方式

基本上之内两大类方案就才可以推动 Visual C++ 文字与汇编文字搅拌编译程序, 有时候在一定特殊性的症状下,用这俩种做法却不要充分满足性能的需用, 爱游戏(ayx)要求一堆种新的办法) ) ) 依据数组只依靠游标做到前两者的相溶编写程序 。以下综合所搭建的过程) ) ) 机床小软件机系统方式操控小软件机系统小开发软件管理, 来来进行实际上详细说明[ 3 ] 。

该过程是在Visual C++ 6. 0 的条件下进行开发管理的,顶层选取VC++ 语种, 最表层采用了了汇编语言的,在VC++ 语言表达方式的时需赋值汇编语言表达方式的的编译最终结果, 并举行回填,用实用的结合编写程序具体方法就没有办法保持两种钢材的传参,毕竟底部汇编表达是把所以的方式运算基本功能控制台命令汇编在一个, 而在VC++ 话述的中会按照需要在需要的位置调节汇编话述的中的某段技能功能设计, 对此对汇编语种编译后的. obj 材料始终无法来进行管理 。大概完成方式方法有以下:

( 1)把具有所有的的逻缉指令英文的汇编语句编成小个汇编版块过程,在汇编编译器(如masm 6. x)会汇c语言编程序编译成. obj文件格式 。

(2) 将汇编转成的机码放置在1个数组中, 列如 定意的数组变量值unsigned char OBJMOD[ 1241] 。

( 3)分类各个指示针业务类型自变量对准OBJMOD 数组要素的详细地址,该具体地点分别任何汇编功能功能的首具体地点,如名词解释另一个游针数据 unsigned char * LIBC21=&OBJMOD[ 869] 。

( 4) 经变量COPILE( * pModal) 模组举列编译汇编 LIBC21 性能组件时过读取 COPI LE( LIBC21)数学函数,把汇编编译转化成的机源代码差别获取到活动区WKAREA 中,  WKAREA[ POSIRR]= BUFRIS[ PTRIS] 来做完分次充填,把汇编机码中转变的介绍转变成各种需求的门店地址或值,后过跳转一类别函数值把重大成果存有到资料中[ 4 ] 。

3   寄存器的使用的合同约定

在因此寄存器中, BP 应最先出现需注意,毕竟要是加入汇程序设计序, BP 的介绍在子应用程序通道处被压入栈内,和栈指示针( SP)的当前值一定要放至BP 中,在子软件程序出口量处BP 被弹出网页,找回居然的值 。

4   结束了之语

按照俩种或俩种综上所述的程序设计序表达混合型程序设计序, 真正的爱情充分传参,做好叁数引入, 不是种有郊的程序代码设计制作办法步骤 。种办法步骤就能够有力挥发不同语音的优劣势,积极应用原有的方便使用小程序,是特定编写程序技木的一款决定性科学研究和利用层面 。

本结题报告用该方式推动了Visual C++ 和汇程序设计序语言的结合程序设计,因而变现Visual C++ 文字与汇编文字的无缝隙配合 。

本文由 文章 整理发表  ,文章来自网络仅参考学习  ,本站不承担任何法律责任 。

标签: 编程  加工中心  
上一篇学生在数控车实际操作教学的四个要点
下一篇如何将数控系统技术搭配在单片机上

编程  加工中心  相关内容

——

11 2024-12

U600S五轴加工中心视频

此视频详细介绍了U600S高性能五轴加工中心各种参数及说明!… [了解更多]

05 2024-11

六角亭五轴加工工艺

本文以组合式六角亭模型为实例  ,分析工艺难点与加工可行性  ,指出该模型的加工难点是模型形状不规则和整体刚性差  ,并通过设计新的工艺方案解决加工难点  ,完成了模型整体的加工 。新的加工工艺有助于提高加工效率和精度  ,为五轴数控加工提供了一个典型案例  ,对于五轴加工中心数控加工也具有指导作用和重要… [了解更多]

05 2024-11

自适应控制方法在混联五轴加工中心中的应用

爱游戏(ayx)数控 备注:为保证文章的完整度  ,本文核心内容由PDF格式显示  ,如未有显示请刷新或转换浏览器尝试  ,手机浏览可能无法正常使用!本文摘要:通过对混联五轴加工中心自适应深度学习控制方法的 研 究  ,可 知 此 方 法 的 创 新 之 处 在 于:1)建 立 了 机 床 的 运 动 学 … [了解更多]

05 2024-11

五轴加工中心和五轴钻攻中心在机测量探头补

在机测量技术由于其成本低、检测效率高、无需二次装夹等优势被广泛用于零件加工测量当中  ,使得五轴加工中心和五轴钻攻中心  ,同时又兼具测量功能 。在机测量系统的构成如图1所示  ,硬件部分主要是由高精度探头、信号接收器、机床整个本体  ,软件部分由机床控制系统、测量软件等组成[8] 。待零件加工完成… [了解更多]

05 2024-11

五轴加工中心进给系统动态误差影响因素

​加工精度是影响机床性能和产品质量的主要难题  ,也是制约国家精密制造能力的重要因素 。本文以五轴加工中心为对象  ,针对提升机床精度进行了研究 。并且随着科技的发展  ,精密的仪器和零件在生产实践中占据的分量逐渐增加  ,在数控机床这种精密机器精度不断提高的同时  ,必须控制内外界爱游戏(ayx)的随机影响因素在… [了解更多]


产品中心

——