首页
社区
课程
招聘
[讨论]学汇编时发现的一个小问题
发表于: 2009-1-21 11:06 3577

[讨论]学汇编时发现的一个小问题

2009-1-21 11:06
3577
请大家看看,不纯粹是针对这个问题而与大家讨论的。我发出此问也是想向有经验的编程者要个说法,好让新手(包括我)更好的掌握
书中,有一个实验题:
-----------------------------------------------------------------------------
有这么一问:
name segment
...
name ends

如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为多说:
-----------------------------------------------------------------------------
我在网上搜索到一份答案,回答是: (N/16+1)*16 [说明:N/16只取整数部分]

对于给出的答案(一名网友自己总结的,并非书中作者给的答案),我的看法如下:
因为在书本中看过一句话,一个段的起始地址必须是16的整倍数,假设段段地址为1000;如果此段正好有10个字节数据,那么10000~10009是用来存放这10字节数据的空间;并且此段后面紧跟着又有一个段,因为说过段的起始地址为16的整倍数,那么下一个段的起始地址为1001.。(1000到1001之间有16个空间相隔,是从10000~1000f)
总结而来是:10个字节的数据需要开辟16字节的内存空间.

但是按照以上公式,我发现一个问题:
上面使用的是10个字节为例,如果使用10h个字节为例呢,10h等于16,现在有16个字节的数据,按说10000-1000f足够存储这16个数据,按以上公式算一下(16/16+1)*16就等于32了,难不成需要开辟32个空间来 存放这个16个字节数据么?

或许有人会说我钻牛角尖,自己心里清楚就得了,没必要这么较真,不过说实在话,如果所占据的数据大小在大些,例如有32fa个字节数据,应该开辟多少个内存空间呢?
所以请有经验的人员讲解一下.

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 208
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=;]...[/QUOTE]
很简单,有个“数据对齐”原则不就OK了。
2009-1-21 19:55
0
游客
登录 | 注册 方可回帖
返回
//