| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 965 人关注过本帖
标题:【转载】到底什么指令快?什么指令慢?一个小程序可以告诉你。。。(win32h汇 ...
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
 问题点数:0 回复次数:3 
【转载】到底什么指令快?什么指令慢?一个小程序可以告诉你。。。(win32h汇编)
;****************************************************************************************************************
;作者:zklhp  
;Email:zklhp@
;QQ:493165744
;版权所有    转载请保持完整
;****************************************************************************************************************

这个标题不错。。

以前有一些关于指令优化的文章 讲了一些你应该用什么指令而不应该用什么指令的东西 不过现在CPU发展这么快 运算能力在绝大多数情况下已经过剩了 这些东西已经没人提了 不过什么指令快 什么指令慢的问题还是存在的 简单写了个程序来研究这个问题

程序很简单我就不多说了 感兴趣的可以用这个玩意研究研究指令问题。。

代码如下

程序代码:

;MASMPlus 代码模板 - 控制台程序
;*****************************************************************************************************************
;作者:zklhp 
;Email:zklhp@
;QQ:493165744
;Last Update:2011.11.22
;版权所有    转载请保持完整
;*****************************************************************************************************************

.686
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include gdi32.inc

includelib gdi32.lib
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
includelib msvcrt.lib

include macro.asm

printf PROTO C lpszFormat_IN:DWORD,var_IN:VARARG

.data
    dwa            dd 5
.data?
    buffer        db MAX_PATH dup(?)
    dwlm            dd ?
    dqOStart        LARGE_INTEGER <>
    dqOEnd        LARGE_INTEGER <>
    dqTStart        LARGE_INTEGER <>
    dqTEnd        LARGE_INTEGER <>
    dqFreq        LARGE_INTEGER <>
    dqTime1        LARGE_INTEGER <>
    dqTime2        LARGE_INTEGER <>
    fTimes        REAL8 ?
.CODE


START:
   
    ;最高优先级
    invoke GetCurrentThread
    invoke SetThreadPriority,eax,THREAD_PRIORITY_TIME_CRITICAL
   
    invoke QueryPerformanceCounter,offset dqOStart
    ;*********************************************************
    mov ecx,08000H    ;循环32K次 总共是1G个nop哦
    @@:
        ;以32K个nop
        repeat 08000H
            nop
        endm
    dec ecx
    jnz @B
    ;*********************************************************
    invoke QueryPerformanceCounter,offset dqOEnd
   
    invoke QueryPerformanceCounter,offset dqTStart
    ;*********************************************************
    mov ecx,08000H    ;循环32K次 总共是1G个指令哦哦
    @@:
        ;以32K个
        repeat 08000H
            add eax,1
        endm
    dec ecx
    jnz @B
    ;*********************************************************
    invoke QueryPerformanceCounter,offset dqTEnd
   
    invoke QueryPerformanceFrequency,offset dqFreq
    mov eax,DWORD ptr dqOStart
    mov edx,DWORD ptr [dqOStart+4]      
    sub DWORD ptr dqOEnd,eax
    sub DWORD ptr [dqOEnd+4],edx
    mov eax,DWORD ptr dqTStart
    mov edx,DWORD ptr [dqTStart+4]      
    sub DWORD ptr dqTEnd,eax
    sub DWORD ptr [dqTEnd+4],edx
    mov dwlm,1000
   
    finit
    fild dqFreq
    fild dqOEnd
    fimul dwlm
    fdivr
    fistp dqTime1    ;dqTime中的64位值就是时间间隔(以ns为单位)
   
    fild dqFreq
    fild dqTEnd
    fimul dwlm
    fdivr
    fistp dqTime2    ;dqTime中的64位值就是时间间隔(以ns为单位)
   
    fild dqTEnd
    fild dqOEnd
    fdiv
    fstp fTimes
   
    invoke printf,CTXT('参比测试用时:%lums',0dh,0ah),[dqTime1]
    invoke printf,CTXT('指令测试用时:%lums',0dh,0ah),[dqTime2]
    invoke printf,CTXT('相对nop的比值:%f',0dh,0ah),[fTimes]
   
    ;暂停显示,回车键关闭
    invoke StdIn,addr buffer,sizeof buffer
    invoke ExitProcess,0
   
end START



代码+程序+MasmPlus工程文件:

InsBMT.zip (9.97 KB)


结束。。
收到的鲜花
  • zaixuexi2011-11-23 23:53 送鲜花  50朵   附言:能看懂意思
搜索更多相关主题的帖子: 优化 Email 文章 版权 
2011-11-23 12:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
怎么论坛发图片不好使 发zip可以呢 不知道咋回事、、、

自己顶
2011-11-23 12:09
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-11-23 12:16
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
Firefox Nightly 11 发不了图 Chromium 就可以。。


[ 本帖最后由 zklhp 于 2011-11-23 12:18 编辑 ]
2011-11-23 12:17
快速回复:【转载】到底什么指令快?什么指令慢?一个小程序可以告诉你。。。(wi ...
数据加载中...
 
   



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

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