VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1057|回复: 3

[交流] 编写x64程序和win32有什么区别?

[复制链接]
24_avatar_middle
在线会员 发表于 2016-2-23 10:22:43 | 显示全部楼层 |阅读模式
3驿站币
本人一直都是在win32平台编写应用层程序,今天突来奇想,想问下vs上的x64程序是怎么编写的?和win32程序编写有什么不同?我也试了一下,把之前的win32工程选上x64编译,也一样编译得过啊,但我还是想知道怎么编写x64的程序,还有win32程序编写转成x64程序有什么区别和注意的吗?





上一篇:memcache 技术交流
下一篇:vc6 窗口显示像素怎么设置
81_avatar_middle
online_moderator 发表于 2016-2-23 16:20:10 | 显示全部楼层
运行时肯定不一样了,以前 int 占用4个字节,这回占用8个字节了,能一样吗
01_avatar_middle
在线会员 发表于 2016-2-23 17:09:52 | 显示全部楼层
原理上肯定都是一样的,大部分API都不用改,只有少部分API需要区别对待x86版本和x64版本,你能编译通过表示你写的程序还是比较小的。另外,你的程序应该没有对进程进行操作。
就我个人经验而言,在数据操作(也包括网络数据),内存操作以及一些微软未公开的数据结构上,很容易遇到让程序崩溃或者操作失败的地方,这个时候就需要注意区别了。
另外,你的程序是ring3层,等你深入到ring0发现这种问题会更普遍一点。最简单的,获取ssdt的方式完全不一样。
编译通过,不是代表就能操作成功。
x64编程也不是说多神秘,也不过是在x86上做了个升级而已,大部分都还是相同的,遇到不同的,做一下代码修正就好了,当然,对于比较大型的程序不建议进行代码兼容处理,这样对于工程不好管理,且对代码模块化没好处!!

评分

参与人数 1威望 +3 驿站币 +4 热心值 +4 收起 理由
51_avatar_small Syc + 3 + 4 + 4 赞一个!

查看全部评分

01_avatar_middle
在线会员 发表于 2016-2-23 17:14:13 | 显示全部楼层
Debug 发表于 2016-2-23 16:20
运行时肯定不一样了,以前 int 占用4个字节,这回占用8个字节了,能一样吗

不知道你是使用什么IDE做的测试(GCC?),VS编译器对于int,long等四字节的关键字没有做升级处理,依然是4字节,只是int* 之类的指针是占用8个字节,但是他指向的是占4字节的int类型!!
我的印象中GCC对long做了升级处理,但我也没做测试。不知是不是这样。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-4-19 11:24

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表