首页
社区
课程
招聘
[原创]我眼中的数据对齐
发表于: 2005-6-16 16:37 18465

[原创]我眼中的数据对齐

2005-6-16 16:37
18465

                           我眼中的数据对齐

                                                         作者:溟初

声明:这篇文章是用word写成的,里面含有一些表格、流程图什么的,不易贴出,在此仅列一下目录,感兴趣者可以下载察看!

    在看雪论坛关于memcpy的帖子 (<memcpy应该怎样写,同时庆祝新版开张>http://bbs.pediy.com/showthread.php?threadid=14128) 中谈及了数据对齐的话题,重新唤起了我对它的思考(以前一直都似懂非懂,逐渐淡忘了^_^),纯属个人见解,请批评指正!

一、什么是数据对齐?请看官方的解释:

二、数据对齐随处理器和编译器的不同而不同,处理好数据对齐可以提高程序的时空效率(节省空间,提高效率),特别是在汇编程序中。
1、在处理器方面:
2、在编译器方面(以微软的ml、link为例):
(1)、全局变量:
(2)、函数参数和局部变量:
(3)、结构体字段对齐(在移植程序时需要特别考虑,写网络程序好像也很重要):
(4)、指令对齐:
(5)、段的对齐类型:
(6)、PE文件中的SectionAlignment、FileAlignment:

三、尝试分析\VC98\CRT\SRC\PLATFORM \memcpy.asm(VC6.0安装盘上,vc7.0在安装盘crt\src\intel\下,你也可以从网上找到)
1、覆盖的情况:dst>src && dst < src + len时,如下图:
2、memcpy.asm代码分析。

四、结束语:
这篇心得终于完成了,感觉自己的表达能力还是很有限,请批评指正,我的e_mail:hejiwen2001@sohu.com,如果它能给你带来帮助,我将很欣慰!,至少没有白忙活J

Reference:
1、《The art of assemle language》    来自 http://asm.yeah.net/
2、《windows核心编程》                来自 http://www.infoxa.com/
3、《INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986 》    来自 http://purec.binghua.com/
4、http://blog.dreambrook.com/soloist/archive/2004/12/12/388.aspx
5、http://wncj.vicp.net/course/hep/huibianyuyan/04-3.htm
6、http://msdn.microsoft.com/library
还有其他一些相关的网络资源,在此一一谢过附件:AlignInMyOpinionPDF.rar


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-8-6 09:29 被kanxue编辑 ,原因:
收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
更新了一下附件!请管理源删除第一个,谢谢!
2005-6-16 16:53
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
3
不错,还画了流程图
2005-6-16 17:13
0
雪    币: 519
活跃值: (1223)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
4
呵呵不错,很正式的样子
2005-6-16 23:10
0
雪    币: 328
活跃值: (925)
能力值: ( LV9,RANK:1010 )
在线值:
发帖
回帖
粉丝
5
支持一下!
2005-6-17 08:27
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
我排了一下版,然后把它转化为PDF了。谢谢大家的支持!
2005-6-17 08:59
0
雪    币: 230
活跃值: (180)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
不错!支持一下!
2005-6-17 12:01
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
太好了!!
2005-6-18 10:06
0
雪    币: 207
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
楼主讲得很好呀! 不过还是建议楼主在文章中讲清楚是在什么操作系统下的实践。因为在Win32下的数据对齐是默认32位的,但在DOS下是16位的。例如一个DWORD在Win32下是4字节,但在DOS下只是2字节!不说清楚的话极易造成初学者的混淆!另外在64位操作系统中,这些数据的大小还没有真正统一起来,Microsoft在Windows 64中规定了int,float等等还是4字节的,但只是指针转为8字节了!偶们老师说写论文一定要严谨,建议楼主作相应的补充!
2005-6-19 02:59
0
雪    币: 288
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
最初由 gnucool 发布
楼主讲得很好呀! 不过还是建议楼主在文章中讲清楚是在什么操作系统下的实践。因为在Win32下的数据对齐是默认32位的,但在DOS下是16位的。例如一个DWORD在Win32下是4字节,但在DOS下只是2字节!不说清楚的话极易造成初学者的混淆!另外在64位操作系统中,这些数据的大小还没有真正统一起来,Microsoft在Windows 64中规定了int,float等等还是4字节的,但只是指针转为8字节了!偶们老师说写论文一定要严谨,建议楼主作相应的补充!

谢谢你的建议:我是在win2000 professional上试验的,汇编器是:masmv328.0
这不是论文,只是我的一点心得,写出来于大家共享。说得对,其实不论写什么都要严谨,对自己负责,也是对看文章的人负责,再次谢谢你!
2005-6-20 08:37
0
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好!不错!一直似懂非懂,看看楼主的文章。
2005-12-26 17:26
0
雪    币: 212
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
不太明白
2005-12-26 19:00
0
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
这篇文章的附件加载不了了。
2018-1-22 10:37
0
雪    币: 965
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这篇文章的附件加载不了了
2018-1-23 11:26
0
雪    币: 3170
活跃值: (129)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
附件:404了
2018-8-6 09:24
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
16
灵音 附件:404了
已修正了:https://bbs.pediy.com/upload/2005/41/files/aligninmyopinionpdf.rar
2018-8-6 09:29
0
游客
登录 | 注册 方可回帖
返回
//