百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[Unix/Linux] 浅谈win32asm原理概述 [复制链接]
查看:566 | 回复:3

132

主题

134

帖子

227

积分

落伍者(一心一意)

Rank: 1

贡献
155
鲜花
1
注册时间
2012-6-25
发表于 2012-11-20 10:10:26 | |阅读模式 来自 中国北京
     我们这里所涉及到的都是与我们相关的80386及以后的版本。windows在单独的虚拟磁盘空间运行单个win32程序。这个意思就是说每个win32程序都有自己独立的4GB寻址空间。但这并不意味着每个win32程序都有4GB的物理存储空间,只仅仅是这个程序能在这个范围里寻址而已。工作是由windows来处理并确认这个程序内存地址的有效性。当然,这个程序必须是按照windows程序规则来编译的才行。和win16程序不一样的是所有的win16程序互相“看到”对方。这在win32下是没有的。这个特征帮助减少某程序代码覆盖另一程序的可能。内存模式也和以往的win16世界完全的不同。在win32世界里,我们不需要考虑内存模式或者是什么段。这里只有一种模式:Flat memory model.这里也没有什么64K段地址的限制。内存是一个4GB的连续的大空间。也就是说我们不必非要和段寄存器玩。我们也能用一些段寄存器来寻址内存中的某处。这对程序员来说是一个极大的帮助。这也让编译win32程序和c语言一样。当你在win32下编译程序时,你必须要知道一些重要的规则。其中一个是:windows内部使用esi、edi,ebp和ebx并不能在这寄存器中改变数值。所以记住这条规则的意思就是:假如你在返回函数中使用这四个寄存器中某个的话,不要忘记在返回window时恢复初值。一个返回函数就是在你的程序中返回window。一个返还函数就是被windows调用的你自己的私有函数,最典型的例子就是windows程序。但这并不意味着你不能使用这四个寄存器了,只要你能确认在返回windows时恢复了它们的初值就行了。

0

主题

38

帖子

35

积分

落伍者(一心一意)

Rank: 1

贡献
15
鲜花
0
注册时间
2012-11-20
发表于 2012-11-20 11:26:03 | 来自 中国广东广州
真好,又学了东西了
头像被屏蔽

1

主题

6152

帖子

-3

积分

禁访

贡献
76
鲜花
0
注册时间
2012-11-14
发表于 2012-11-20 11:47:34 | 来自 中国辽宁沈阳
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

3

主题

756

帖子

-3

积分

接近落伍(少量栏能发帖)

贡献
76
鲜花
0
注册时间
2012-9-26
发表于 2012-11-20 23:01:40 | 来自 中国湖北武汉
说的好,学习了
http://mdgcyy.com
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-6-12 05:31 , Processed in 0.107781 second(s), 37 queries , Gzip On.

返回顶部