⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 docpu.asm

📁 代码优化,有效使用内存,透视优化技术,对比优化方法,如果你在追求代码效率的最大化,该资源你不能不读.
💻 ASM
字号:
.686p
.MODEL FLAT

ITER    EQU     10                  ; number of iterations
CPU_PAGE_SIZE   EQU 4096

.DATA                               ; data segment
ALIGN 4
COUNTER DD      0                   ; loop counter
subtime	DD		0
time	DD		0
TICS    DD      0                   ; temporarily storing the timer counter
Zero    DD  0
RESULTLIST  DD  ITER DUP (0)        ; list of test results

_CODE segment page "CODE"           ; code segment

; ARG
__CPUID	proc
	PUSH	ESI
	MOV		ESI,[ESP+0Ch] ; <- store
	MOV		EAX,[ESP+08h]	; in
	PUSHA
	CPUID
	MOV		[ESI+00h],EAX
	MOV		[ESI+04h],EBX
	MOV		[ESI+08h],EDX
	MOV		[ESI+0Ch],ECX

	POPA
	POP		ESI
	RETN
__CPUID	endp




	
	

__stream_cpy    proc    
    MOV EAX, [ESP+8]
    MOV EDX, [ESP+4]
;         movaps  xmm0, oword ptr [eax]
    DB  0Fh
    DB  28h
    DB  00h

;         movntps  oword ptr [edx], xmm0
    DB  0Fh
    DB  2Bh
    DB  02h
    RET
__stream_cpy    endp

__mmx_cpy   proc
    MOV EAX, [ESP+8]
        MOV EDX, [ESP+4]

        ;MOVQ   mm0, [EAX]
        DB  0Fh
        DB  6Fh
        DB  00

        ;MOVQ   [EDX],mm0
        DB  0FH
        DB  7Fh
        DB  02h
        RET
__mmx_cpy   endp


__sfence    proc
    DB  0Fh
    DB  0AEh
    DB  0FFh
    ret
__sfence endp


__prefetchnta   proc
    MOV EAX,[ESP+4]
    DB  0Fh
    DB  18h
    DB  00h
    RET
__prefetchnta   endp


__prefetcht0    proc
    MOV EAX,[ESP+4]
    DB  0Fh
    DB  18h
    DB  08h
    RET
__prefetcht0    endp


__prefetcht1    proc
    MOV EAX,[ESP+4]
    DB  0Fh
    DB  18h
    DB  09h
    RET
__prefetcht1    endp

__prefetcht2    proc
    MOV EAX,[ESP+4]
    DB  0Fh
    DB  18h
    DB  0Ah ; <????
    RET
__prefetcht2    endp


; 
__mmx_memcpy    proc
    MOV EAX, [ESP+8]
    MOV EDX, [ESP+4]
    MOV ECX, [ESP+12]
    SHR ECX, 3

@Rool:
        ;MOVQ   mm0, [EAX]
        DB  0Fh
        DB  6Fh
        DB  00

        ;MOVQ   [EDX],mm0
        DB  0FH
        DB  7Fh
        DB  02h

    ADD EAX,8
    ADD EDX,8
    DEC ECX
    JNZ @Rool
    RET

__mmx_memcpy    endp

__ppp_memcpy    proc
    PUSH    ESI
    PUSH    EDI
    PUSH    ECX

    MOV EAX, [ESP+8+4*3]
    MOV EDX, [ESP+4+4*3]
    MOV ECX, [ESP+12+4*3]
    SHR ECX, 3

@Rool:
    MOV ESI,[EAX]
    MOV EDI,[EAX+4]
    MOV [EDX],ESI
    MOV [EDX+4],EDI 

        ADD EAX,8
        ADD EDX,8
    DEC ECX
    JNZ @Rool

    POP ECX
    POP     EDI
    POP ESI
    RET
__ppp_memcpy    endp

__null  proc
    RET
__null  endp


_DoCPU proc
    MOV     ESI, [ESP+4]        ; Loading our argument

BEGIN:  
    MOV     [COUNTER],0         ; Initializing the iterations counter

    
INCLUDE code.ini

    jmp testloop

    align 20h
TESTLOOP:                           ; loop check
	; // 獱

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -