-
-
[讨论]学汇编时发现的一个小问题
-
发表于:
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解题方法汇总!