liuhui88126 发表于 2011-5-8 16:52:08

关于第6章,实验5,第二题

本帖最后由 loop 于 2011-5-29 23:37 编辑

对于如下定义的段:
name segment
........
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为?


想了半天想不通,上网看了答案,只说出答案,没说为什么是这个答案。。

请高手详细解释下。只说出答案的就别回答了。答案不是我想要的,我想要的是为什么是这个答案。。另外用DEBUG如何查看也详细说下

还有就是答案后面是什么单位?

小甲鱼 发表于 2011-5-8 16:55:29

这个问题不同系统有不同的答案的说。
一般加载到内存后,要进行内存对齐。

liuhui88126 发表于 2011-5-8 17:03:15

那个(N/16+1)*16 是什么意思

风扫地 发表于 2011-5-8 17:14:20

本帖最后由 风扫地 于 2011-5-8 17:23 编辑

回复 liuhui88126 的帖子

(N/16+1)*16
这里应该是按C语法理解的吧。。。N/16 没有小数的哦。。只保留整数位
个人觉得这个式子也有点问题。。
N是16的倍数的话,就不用加1再乘以16了。。就直接是N。
。。故乡的风提醒的

liuhui88126 发表于 2011-5-8 17:39:30

我是不是可以这样理解,0-F为一个空间也就是16B?
如果段中的数据为14个字节,用一个空就就可以存放了,就是16B了?
那如果段中的数据为16个字节,一个空间不是也可以存放,可为什么会是32B呢?

风扫地 发表于 2011-5-8 17:45:40

liuhui88126 发表于 2011-5-8 17:39 static/image/common/back.gif
我是不是可以这样理解,0-F为一个空间也就是16B?
如果段中的数据为14个字节,用一个空就就可以存放了,就 ...

是啊。。N如果是16的倍数。。。那就不用加1再乘以16了。。。直接就是N

liuhui88126 发表于 2011-5-8 17:52:25

那就是这个公式有问题了。。。

liuhui88126 发表于 2011-5-8 17:52:57

回复 风扫地 的帖子

算是理解一半了,还不是很清楚,谢谢了

weixianlang 发表于 2011-5-8 19:00:26

按理说这里应该用进一法,不过公式是这样,没办法,在它的地盘搞事,就要遵守它的规则!
页: [1]
查看完整版本: 关于第6章,实验5,第二题