首页
社区
课程
招聘
[旧帖] [讨论]小弟对内存地址和寄存器中的高位和低位的理解,请大家指点 0.00雪花
发表于: 2007-8-7 00:13 7638

[旧帖] [讨论]小弟对内存地址和寄存器中的高位和低位的理解,请大家指点 0.00雪花

2007-8-7 00:13
7638
小弟初学,傻傻的说一下自己的理解,请各位指点纠正:内存堆栈是先进后出的原则,进(push)就是从寄存器写入椎栈,出(pop)就是从堆中读入到寄存器中,并且进栈出栈都按双字节为单位进行,堆栈的进出都发生在栈顶(系统分配的内存段中低地址的地方),不知道这里面有哪些理解错误的地方???
    还有一个题外话,从外存中读入一个文件到内存,这个文件是先经过CPU的寄存器还是直接就映射到内存里了??我想好像应该是先映射到内存里了(但是又想没有CPU的处理怎么读进去内存的啊??)  
    就是这方面的问题还真的不少,不了解计算机工作的内部原理,想看书吧,不知道应该看哪一方面的?数据结构??微机原理?汇编??  请各位高手赐教啊!!!

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
2
不好意思``
我指一个错误,进是push,出是pop,这应该是楼主笔误````

说白了就是ss:sp
sp指向栈顶
指定ss栈段基址
指定sp栈顶
刚开始栈空时,sp指向栈末尾+1的内存单元

push时,sp-2,再写入栈单元
pop时,sp+2,再读出栈单元内容,(注,此时只是读出栈单元内容,并不改变其内容,栈顶向高地址移动了,所以不再指向原读出的栈单元地址,当再次使用push时,sp-2再写入栈单元时,便会替换掉上次nop时没清空的数据)

还有栈超界,等知识``
2007-8-7 09:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上的精贴真多
2007-8-7 10:06
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看完莱老大的贴子,小弟受教了,两处写错指令的地方已经纠正过来了!但是还有几处不明白,下面说明一下:
     1、“es指向栈顶”这是在什么时候发生的呢?书上讲SP指向栈顶(我理解是SP是一相相对栈基址的偏移地址它指向了栈顶的存有数据的那个内存单元)
     2、出栈时,莱老大讲的是先sp+2,然后再读出栈单元内容。我看了书后的理解是先读出栈单元内容,然后再SP+2(因为SP本来已经指向了栈顶的存有数据的那个内存单元,正要访问的也是这个内存单元呀,所以应该是读完后再使SP+2(又作为栈顶地址了))不知这样理解的对不对?
     3、小弟提出的题外话还没有人来讨论了,请大家看了贴后赐教,呵呵!
   感谢莱老大的回复!
2007-8-7 12:08
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
5
不好意思
我写错了,不是es,是sp
出栈时应该是依靠ss:sp,读出字单元后再+2,
2007-8-7 12:11
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
莱老大回复的够快啊,一天好像有20小时在线啊
2007-8-7 12:50
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
仔细理解一下么
2007-8-7 13:41
0
游客
登录 | 注册 方可回帖
返回
//