|
发表于 2015-5-4 14:07:26
|
显示全部楼层
本帖最后由 glider 于 2015-5-4 19:18 编辑
我觉着吧,是指针偏移量,从0开始便于寻址。
解释下:
假如内存2000:0000的值是数字1, 2000:0001的值是数字2, 2000:0002的值是数字3,……;当前的CS:IP是2000:0000
如果我们要取数字1,第1个元素,地址是0,指针从初始位置向后移0位,理解为指针偏移量是0
如果我们要取数字2,第2个元素,地址是1,指针从初始位置向后移1位,理解为指针偏移量是1
如果我们要取数字3,第3个元素,地址是2,指针从初始位置向后移2位,理解为指针偏移量是2
……
以此类推下去,数字N的地址是N-1,指针偏移量也是N-1,就是说:指针的偏移量始终与地址相等,一个元素的地址是多少,指针偏移多少就可以取到
相反,如果不是从0开始,而是从1开始,设想一下:
如果我们要取数字1,第1个元素,地址是1,IP的初始位置向后移0位,指针偏移量是0
如果我们要取数字2,第2个元素,地址是2,IP从初始位置向后移1位,指针偏移量是1
如果我们要取数字3,第3个元素,地址是3,IP从初始位置向后移2位,指针偏移量是2
……
以此类推,数字N的地址是N,指针偏移量是N-1,这样的话,指针的偏移量比下标(或者索引)少1,即是说:一个元素的地址是N,指针偏移N再回退1,或者先计算N-1的值,再进行指针的移动
我们知道计算机活动期间一直在对内存进行寻址、读写,可想而知,这种方式对计算机的开销有多大
------------------------------------------------------------------------------------------------------
以上纯属个人看法,欢迎讨论 |
|