首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

关于lea ecx,[edx+edx*2]指令的疑问,该如何解决

2012-03-31 
关于lea ecx,[edx+edx*2]指令的疑问反汇编VC的代码,经常有上面的类似指令,我想问的是上述leaecx,[edx+edx*

关于lea ecx,[edx+edx*2]指令的疑问
反汇编VC的代码,经常有上面的类似指令,我想问的是上述lea   ecx,[edx+edx*2]这条指令在现在的C2.8D的CPU中怎么被具体执行?消耗多少个CPU的时钟周期?
还有就是lea   ecx,   [edx]这条指令和上述指令在执行周期上快多少?

[解决办法]
對32位匯編不熟悉,愛莫能助!!
看來偶得努力學習32位匯編呀。。。。呵呵。慚愧!!!
[解决办法]
首先需要知道Pentium D设计有多少级流水线(好像是30),然后就是Netburst架构中超标量的性能提升方式,最后是双核的协同工作分配方式,这样也许才能够推算出时钟消耗。
这是个人推测,还请高手指点。
[解决办法]
對32位匯編不熟悉,愛莫能助!!
看來偶得努力學習32位匯編呀。。。。呵呵。慚愧!!!
-----------------------------
呵呵,貌似王爽的书的局限性体现了出来
[解决办法]
如果想知道消耗的时钟周期,可以用2种办法:


0 使用 ml 的 Sc 选项:
ml /c /coff /Fl /Sc a.asm

则在 a.lst 中可以看到:
00000000 2 8D 0C 52 lea ecx,[edx+edx*2]
解释可以看我blog中的《关于指令时间的问题》的文章(hopy.blogchina.com)

1 使用 cpu 计算指令周期指令自己在运行时计算。

[解决办法]
问题对我来说太高深了,要加油了!呵呵
[解决办法]
呵呵,貌似王爽的书的局限性体现了出来


================================
这和书没关系,只是在下才疏学浅罢了。。。
[解决办法]
我记得在另一个帖子里曾经说过这个lea,地址计算中如果包括两个寄存器,时钟周期是2,否则是1,从486开始一直都是如此。

[解决办法]
lea ecx,[edx+edx*2] 2
lea ecx, [edx] 1
还有什么好解释的。

热点排行