ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:459.13KB ,
资源ID:18613423      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18613423.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(x86平台转x64平台关于内联汇编不再支持的解决Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

x86平台转x64平台关于内联汇编不再支持的解决Word文件下载.docx

1、看到上图的Debug和Win32字眼么,就从这里开始改。下拉Win32右端的下三角,呈现出如上图。由于我已经设置好了,会有x64字眼。如果以前没有设置,那么默认是没有x64字样的。要出现x64平台,请设置:点击“配置管理器”,一系列操作见图知意:注意:一般情况下,是在X86平台下编程,至少我是这样的。那么装VS2005的时候默认是不支持在X86平台下编译连接生成X64平台的EXE的。如果真的要在X86下编译连接生成X64平台的EXE,比如和我一样。那么找到您安装VS2005时候的SETUP.EXE,双击它,选择“添加或者删除”选项(名字不确定,但是是第一项),然后勾选住有X64字眼的那一项(具

2、体我也不记得了),然后等SETUP.EXE帮你装上这一项就好了。接下来看图当你第一次“新建”的时候,在“新建平台(P)”下会出现“X64”选项,这里没有出现,因为我之前已经都设置好了。都说了试一试了,结果上面才弄好了环境设置。下面编译连接(F7),啊哦!出错了,而且一大堆错误提示!妈呀!经典的一句报错是:error C4235:使用了非标准扩展:不支持在此结构上使用“_asm”关键字完蛋了!想办法咯上网求解方案,说VS2005 X64平台下不再支持内联汇编了!但是考虑到时间,又不允许换编译器,怎么办?继续上网搜索解决方法。有了。单独写汇编ASM文件,编译生成.OBJ文件。也就是说不能在C/C+

3、代码中直接内嵌(内联)汇编了,而要把原先内联的汇编全都放在一个独立的汇编文件中。换句话说,一部分汇编代码,一部分C/C+代码。然后将独立汇编编译生成的.OBJ文件附加到C/C+主工程之中。好像好难哦,没事,万事开头难嘛好的,不懂的话先往下看了!下面还有一些头大的操作那记住,我是在X86平台下编译连接X64平台下的程序哦!主工程是在X64平台下运行的程序。上面说的两部分:汇编和C/C+当然是X64平台下的(肯定的嘛)。64位汇编,傻眼了,32位都头大,一下子跳到64位,有没有搞错?没有,32位汇编代码应该是不用做太大的改动的。事实上证明,确实是这样的哦首先,不是把原先的内联汇编代码改成单独的汇编

4、文件。问题是写好了64位汇编,怎么编译单独的汇编文件?用VS2005集成环境去编译单独的汇编文件,对,就是这样,不要再回到DOS界面敲命令行了,这会死人的,而且不方便!接下来跟着我做:用VS2005建立一个常规的空项目。然后将自己改好的64位汇编(说白了,大部分还是32位的指令)加入该工程中,F7编译连接好像有反应,但是是假象!默认的话IDE不认识汇编。怎么办?点击“自定义生成规则”:默认只有前两项,最后一项是我自己添加的。第一项,我不知道什么东西。第二项是32汇编的编译器(ml.exe)。但是我们是要编译64位汇编啊!不急,按着下面做:找到这个路径“Program FilesMicrosof

5、t Visual Studio 8VCVCProjectDefaults”,OK,在这个目录下,找到masm.rules。接下来,复制粘贴masm.rules,改复制文件名字为“masm64.rules”。回到IDE,上面就有了三项了。对最后一项进行修改,明显的,不然后两项是一样的。勾选第三项,点击“修改规则文件”:点击“修改生成规则”:改成蓝色选中的文字就行了,就是简单的加了“64”在原先ml后面,你懂的一路确定,万事搞定!如果64位汇编文件没有语法错误,就会生成.OBJ文件了,哈哈!没有这么简单的啦。主要是编写符合要求的64位汇编代码,而不是以前简单的内联在C/C+代码中。关于编写单独汇编

6、代码文件,靠你原先的汇编基础了,这个我没话说了,靠你们自己了!OK,“搞定了”,F7如下提示:1-已启动生成:项目: ASM64,配置: Debug x64 -正在链接.LINK : fatal error LNK1561:必须定义入口点生成日志保存在“file:/f:VC ProjectsVisual Studio 2005 ProjectshappywaytestASM64ASM64x64DebugBuildLog.htm”ASM64 - 1个错误,个警告=生成: 0已成功, 1已失败, 0最新, 0已跳过=我没有去深究入口点,因为我不需要这个,入口点在C/C+主工程那,汇编搞定,语法上!

7、得到了编译生成的asm64.obj。接下来,是另一部分,C/C+主工程代码了,停笔,和田大头吃饭去我X,田大头放我鸽子,一个人吃饭!注意,X86下内联汇编是嵌在函数当中实现的,所以上面的64位汇编的任务就是编写函数过程(PROC)。接下来,回到主工程。在主工程中要用到汇编中的函数,那么汇编生成的.OBJ文件就派上用场了。主工程可以调用.OBJ去使用汇编中的函数。过程如下:“项目”-“属性”,弹出:然后“配置属性”-”链接器”-“输入”,,右侧的“附加依赖项”中,填入汇编文件生成的.OBJ,如下图。然后暴露出汇编中编写好的函数的接口。我是这样暴露我的汇编函数的:externCint_stdcal

8、lRGB2YUV_ALL(intbmpWidth,bmpHeight,unsignedchar*videoRef,char*YUVData);RGB2YUV_BLOCK(intchar*YUVData,LargebmpWidth);如果一切顺利的话,主工程就可以使用上面的函数,编译连接都没有问题,但是万恶的运行时有错,那就得靠你的调试了!至此,差不多,从X86到X64,从内联汇编到单独的汇编文件,解决了X64下不支持内联汇编的问题啦,嘻嘻。但是,更加辛苦和耗时的是汇编代码的修改和编写、C/C+调用汇编函数过程遇到的种种问题,但是只要努力再加上有一定基础的情况下是搞得定许多问题的!如果你感兴趣,或者就是和我一样碰到这样的问题,下面给出实例代码。1. ASM文件.data;数据段.codeFUNCprocMOV EAX, 1234RETendpend2.测试VS2005控制台工程#include extern int _stdcallFUNC();int main(int argc, WCHAR* argv)int nret = FUNC();printf(“%dn”, nret);system(pause);return 0;这其中的过程,还有很多需要解决的问题和思考的地方,这需要你的基本功了,就不在这里都说出来了,做一做就都知道了!相信自己!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1