| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1728 人关注过本帖
标题:汇编为什么不能操作两个内存数
只看楼主 加入收藏
m1c2f4843
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2010-7-30
结帖率:85.71%
收藏
 问题点数:0 回复次数:10 
汇编为什么不能操作两个内存数
如 mov 内存数,内存数

新手求解
搜索更多相关主题的帖子: 内存 
2011-04-28 14:25
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-29 04:49
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
楼上朋友还是要多了解一下。

这个是出于效率方面的考虑。英特尔在设计芯片时就没支持这种内存到内存的mov。
因为进行内存操作效率远比不上进行寄存器操作。
从内存取的数是放在寄存器中,从寄存器中再放回到内存中,如果用一条指令完成,
就需要进行2次存储器读写操作,这样就造成一条指令的效率太低。所以就干脆不支持。
虽然说分成2条指令在我们看起来还不是一回事吗。。。但是这微小的差别就能提升不少效率。

至于说opcode 是先有硬件设计上的考虑,才有opcode上的反映。并不是因为OPCODE没有所以才不支持的。  我倒不记得有24种寻址方式  
记得有篇很好的讲述opcode的文章,还附带3个小例子,是学习操作码的好资料。

另外即使是可以使用这样的指令,也并不表示 “把cpu给绕过了”。。。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2011-04-29 16:38
yoy
Rank: 2
等 级:论坛游民
帖 子:29
专家分:24
注 册:2011-3-9
收藏
得分:0 
书上说cpu没这功能
2011-04-29 19:50
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
先记住不能就行了,有兴趣的话,自己慢慢往下学

技术问题,请不要以短消息方式提问
2011-04-29 22:19
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
这些指令都是由CPU执行的,绕过CPU没有道理,
而且如何操作两个内存数,指令会太长了.
2011-04-29 23:42
mjsxjy
Rank: 2
等 级:论坛游民
帖 子:16
专家分:25
注 册:2008-12-30
收藏
得分:0 
像三楼说的。
这样的指令没必要存在。
mov 内存,内存。就像点要交换二个变量的值,这个楼主肯定知道吧,a=1,b=2,那要交换,也得用一个中间变量比如c来交换。
像mov 内存,内存 这样的指令中间也是要经过内存->寄存器->内存的过程的。你不能直接用内存去交换另一个内存啊,地址为1的内存要和地址为2的内存交换,如果直接交换,那总有一个地址的内容会被洗掉啦。
像这样的间接型操作,写成一个函数就OK了。
当然,我说的不全面。只是个例子。但如三楼版主大大说的又有点深。已经讨论到硬件设计方面了,新手未必看得懂,我才这样回答滴,哈哈。

[ 本帖最后由 mjsxjy 于 2011-4-30 01:12 编辑 ]
2011-04-30 01:06
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-30 01:20
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
我觉得就是x86CPU没这功能 其他的可能有

记住就好了。。
2011-04-30 11:57
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
恩,好像是intel没有,其它的有
虽然见了很多次这个问题了,不过是最有营养的问题了。
微代码,以及其它的一些不懂的。

2011-05-02 17:21
快速回复:汇编为什么不能操作两个内存数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016521 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved