pprpg
发表于 2012-04-03 10:40
oooooxxxxx 发表于 2012-04-03 05:08 static/image/common/back.gif
……
创新的前提是承前,想处理这些问题先要想一想,某些道理很简单为什么别人想不到,真的是他们太傻吗 ...
我倒没有说别人傻的意思, 恰好是因为觉得这个方法似乎更好, 也不难想到, 却为什么没有实际使用.
另外, 我想如果有人有兴趣, 继续讨论下除了兼容性, 这个方案还有没有其它缺点.
lj870128
发表于 2012-04-04 19:57
你给我说说你设想的那代码堆栈和数据堆栈怎么定义的?它们在内存里面是怎么存放的?处理器的缓存和内存的数据交换怎么处理?你这么保证效率?你怎么保证汇编指令不改你的数据?指令添加你打算怎么添加?
pprpg
发表于 2012-04-04 21:51
lj870128 发表于 2012-04-04 19:57 static/image/common/back.gif
你给我说说你设想的那代码堆栈和数据堆栈怎么定义的?它们在内存里面是怎么存放的?处理器的缓存和内存的数据交换怎么处理?你这么保证效率?你怎么保证汇编指令不改你的数据?指令添加你打算怎么添加?
代码堆栈和数据堆栈一样, 在内存中开辟一块作为代码堆栈, 再增加1个寄存器指向代码堆栈的栈顶.
修改call,ret之类的指令实现为在代码堆栈保存和读取地址.
比如call指令, 现在是把当前的下一条指令地址Push到数据堆栈中. 修改后即把当前的下一条指令地址Push到代码堆栈中.
ret同理, 在代码堆栈中获取返回地址.
如果只有call,ret涉及地址的出入栈, 这么修改的效率与原来相同.
汇编指令仍然可以寻址到代码堆栈, 这样是为了防止缓冲区溢出把数据堆栈覆盖后, 返回地址也被修改的情况.
lj870128
发表于 2012-04-04 22:50
本帖最后由 lj870128 于 2012-04-04 22:52 编辑
回复 13# pprpg
内存你想分一块就分一块没问题,分多大?分在哪边?在现在栈的那边还是堆的那边?如果在堆的那边,程序申请内存的时候,你怎么给程序申请同时确保你的栈有足够的空间?如果在现在栈的那边,那么你怎么保证现在栈的增长不会把它给踩了?另外指令不是你想象中这么容易添加的,归根到底它是靠处理器电路实现的,你考虑过处理器怎么设计了吗?脚踏实地地学才是正道,存在必然有存在的道理,想要革命也得深刻熟悉现状的情况下同时找出解决办法,革命不是盲目的~
pprpg
发表于 2012-04-04 23:36
数据堆栈怎么分配代码堆栈就怎么分配, 代码堆栈小得多, 怎么会没有足够的空间?
放在与缓冲区溢出相反的方向就行了.
目前为止用不着增加指令.
修改或增加指令是CPU厂商的事情, 他们肯定知道怎么添加指令, 怎么实现处理器电路, 怎么设计处理器.
我只是有个疑问, 为什么CPU厂商不这么做?
(肯定没到geming的地步, 这个又能用了?)
lj870128
发表于 2012-04-07 13:18
回复 15# pprpg
别理所当然地想这么多,你研究一下计算机体系结构和CPU设计,然后结合现在的情况,多推敲一下再说吧~
pprpg
发表于 2012-04-07 16:25
回复 16# lj870128
欢迎就事论事的讨论, 你这种回复放在所有的帖子里都行. 有什么意义?
如果有人能有针对性的指出我这种提法的问题, 欢迎批评.
但如果只是大而化之的说一个你某某方面要加强, 加强完了后再来讨论. 那是否就像影迷讨论影片一样? 影迷大多既不会导也不会演, 都闭嘴算了.
lj870128
发表于 2012-04-07 17:09
回复 17# pprpg
呵呵,你都没有足够的积累就说这些,有意义吗?你干嘛不去问问飞机制造商为什么不把飞机制造得和飞机里面黑匣子一样坚固,那么岂不是飞机摔不坏了?那么我就简单地问一个,这个算是把缓冲区溢出解决了,你怎么保证没有别的问题,不管你数据在哪里,只要拿到数据的地址,改了就改了?另外你以为人家设计芯片的就没考虑过这个问题吗?别简简单单地说那是人家设计的事情,你来设计一下看看,我最近就在看CPU设计,我知道那些所谓的指令是怎么执行的?CPU设计是权衡各项利弊的,就好比分配内存分页的问题上面,将页的大小设置大了,访问数据更快,但是造成浪费,设置小了节约了,但是数据访问慢了。
pprpg
发表于 2012-04-07 18:21
lj870128 发表于 2012-04-07 17:09 static/image/common/back.gif
回复 17# pprpg
你都没有足够的积累就说这些,有意义吗?你干嘛不去问问飞机制造商为什么不把飞机制造得和飞机里面黑匣子一样坚固,那么岂不是飞机摔不坏了?那么我就简单地问一个,这个算是把缓冲区溢出解决了,你怎么保证没有别的问题,不管你数据在哪里,只要拿到数据的地址,改了就改了?另外你以为人家设计芯片的就没考虑过这个问题吗?别简简单单地说那是人家设计的事情,你来设计一下看看,我最近就在看CPU设计,我知道那些所谓的指令是怎么执行的?CPU设计是权衡各项利弊的,就好比分配内存分页的问题上面,将页的大小设置大了,访问数据更快,但是造成浪费,设置小了节约了,但是数据访问慢了。
有什么系统设计不是权衡各项利弊的?
照常理分析, 这个方案肯定不如现有的. 我在前面也说过这个方法不难想到, 何来"你以为人家设计芯片的就没考虑过这个问题吗?".
我的问题始终是: 是什么具体的原因, 导致不用这个方案(现有的方案漏洞还是不少).
另外, 如果你对找出这个具体的原因不感兴趣, 又何必在这个帖子浪费时间?
lj870128
发表于 2012-04-07 21:12
pprpg 发表于 2012-04-07 18:21 static/image/common/back.gif
有什么系统设计不是权衡各项利弊的?
照常理分析, 这个方案肯定不如现有的. 我在前面也说过这个方法不难 ...
你都说你没写过汇编,那么你对CPU也肯定不熟,你这也不熟那也不熟就来考虑这些事情。我还真没见过有多少人是在没有积累和熟悉全局的情况下就去考虑这些东西,正如爱恩斯坦如果连基本的物理知识都不懂,我还真没法知道他是怎么想出相对论这事情的。我承认我对CPU不算很熟,但是我至少在学习和了解,甚至去尝试设计CPU。我没有兴趣来搭理你这事情的,只是那闪烁的消息提醒碍眼罢了~免回了,费得我碍眼~