📄 cachebandwidth.cpp
字号:
void __declspec(naked) __cdecl WriteCacheLineFwd32(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
xor ebx, ebx
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
ALIGN 16
$write_loop:
mov [eax], ebx
mov [eax+32], ebx
mov [eax+64], ebx
mov [eax+96], ebx
mov [eax+128], ebx
mov [eax+160], ebx
mov [eax+192], ebx
mov [eax+224], ebx
mov [eax+256], ebx
mov [eax+288], ebx
mov [eax+320], ebx
mov [eax+352], ebx
mov [eax+384], ebx
mov [eax+416], ebx
mov [eax+448], ebx
mov [eax+480], ebx
mov [eax+512], ebx
mov [eax+544], ebx
mov [eax+576], ebx
mov [eax+608], ebx
mov [eax+640], ebx
mov [eax+672], ebx
mov [eax+704], ebx
mov [eax+736], ebx
mov [eax+768], ebx
mov [eax+800], ebx
mov [eax+832], ebx
mov [eax+864], ebx
mov [eax+896], ebx
mov [eax+928], ebx
mov [eax+960], ebx
mov [eax+992], ebx
add eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineFwd64(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
xor ebx, ebx
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
ALIGN 16
$write_loop:
mov [eax], ebx
mov [eax+64], ebx
mov [eax+128], ebx
mov [eax+192], ebx
mov [eax+256], ebx
mov [eax+320], ebx
mov [eax+384], ebx
mov [eax+448], ebx
mov [eax+512], ebx
mov [eax+576], ebx
mov [eax+640], ebx
mov [eax+704], ebx
mov [eax+768], ebx
mov [eax+832], ebx
mov [eax+896], ebx
mov [eax+960], ebx
add eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineFwd128(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
xor ebx, ebx
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
ALIGN 16
$write_loop:
mov [eax], ebx
mov [eax+128], ebx
mov [eax+256], ebx
mov [eax+384], ebx
mov [eax+512], ebx
mov [eax+640], ebx
mov [eax+768], ebx
mov [eax+896], ebx
add eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineFwd256(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
xor ebx, ebx
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
ALIGN 16
$write_loop:
mov [eax], ebx
mov [eax+256], ebx
mov [eax+512], ebx
mov [eax+768], ebx
add eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineFwd512(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
xor ebx, ebx
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
ALIGN 16
$write_loop:
mov [eax], ebx
mov [eax+512], ebx
add eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl ReadCacheLineBwd16(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
add eax, ecx
ALIGN 16
$read_loop:
mov ebx, [eax-16]
mov ebx, [eax-32]
mov ebx, [eax-48]
mov ebx, [eax-64]
mov ebx, [eax-80]
mov ebx, [eax-96]
mov ebx, [eax-112]
mov ebx, [eax-128]
mov ebx, [eax-144]
mov ebx, [eax-160]
mov ebx, [eax-176]
mov ebx, [eax-192]
mov ebx, [eax-208]
mov ebx, [eax-224]
mov ebx, [eax-240]
mov ebx, [eax-256]
mov ebx, [eax-272]
mov ebx, [eax-288]
mov ebx, [eax-304]
mov ebx, [eax-320]
mov ebx, [eax-336]
mov ebx, [eax-352]
mov ebx, [eax-368]
mov ebx, [eax-384]
mov ebx, [eax-400]
mov ebx, [eax-416]
mov ebx, [eax-432]
mov ebx, [eax-448]
mov ebx, [eax-464]
mov ebx, [eax-480]
mov ebx, [eax-496]
mov ebx, [eax-512]
mov ebx, [eax-528]
mov ebx, [eax-544]
mov ebx, [eax-560]
mov ebx, [eax-576]
mov ebx, [eax-592]
mov ebx, [eax-608]
mov ebx, [eax-624]
mov ebx, [eax-640]
mov ebx, [eax-656]
mov ebx, [eax-672]
mov ebx, [eax-688]
mov ebx, [eax-704]
mov ebx, [eax-720]
mov ebx, [eax-736]
mov ebx, [eax-752]
mov ebx, [eax-768]
mov ebx, [eax-784]
mov ebx, [eax-800]
mov ebx, [eax-816]
mov ebx, [eax-832]
mov ebx, [eax-848]
mov ebx, [eax-864]
mov ebx, [eax-880]
mov ebx, [eax-896]
mov ebx, [eax-912]
mov ebx, [eax-928]
mov ebx, [eax-944]
mov ebx, [eax-960]
mov ebx, [eax-976]
mov ebx, [eax-992]
mov ebx, [eax-1008]
mov ebx, [eax-1024]
sub eax, 1024
sub ecx, 1024
jnz $read_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl ReadCacheLineBwd32(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
add eax, ecx
ALIGN 16
$read_loop:
mov ebx, [eax-32]
mov ebx, [eax-64]
mov ebx, [eax-96]
mov ebx, [eax-128]
mov ebx, [eax-160]
mov ebx, [eax-192]
mov ebx, [eax-224]
mov ebx, [eax-256]
mov ebx, [eax-288]
mov ebx, [eax-320]
mov ebx, [eax-352]
mov ebx, [eax-384]
mov ebx, [eax-416]
mov ebx, [eax-448]
mov ebx, [eax-480]
mov ebx, [eax-512]
mov ebx, [eax-544]
mov ebx, [eax-576]
mov ebx, [eax-608]
mov ebx, [eax-640]
mov ebx, [eax-672]
mov ebx, [eax-704]
mov ebx, [eax-736]
mov ebx, [eax-768]
mov ebx, [eax-800]
mov ebx, [eax-832]
mov ebx, [eax-864]
mov ebx, [eax-896]
mov ebx, [eax-928]
mov ebx, [eax-960]
mov ebx, [eax-992]
mov ebx, [eax-1024]
sub eax, 1024
sub ecx, 1024
jnz $read_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl ReadCacheLineBwd64(void* src, DWORD count, DWORD repeat)
{
__asm
{
push ebx
mov edx, [esp+4+12]
$main_loop:
mov eax, [esp+4+4]
mov ecx, [esp+4+8]
add eax, ecx
ALIGN 16
$read_loop:
mov ebx, [eax-64]
mov ebx, [eax-128]
mov ebx, [eax-192]
mov ebx, [eax-256]
mov ebx, [eax-320]
mov ebx, [eax-384]
mov ebx, [eax-448]
mov ebx, [eax-512]
mov ebx, [eax-576]
mov ebx, [eax-640]
mov ebx, [eax-704]
mov ebx, [eax-768]
mov ebx, [eax-832]
mov ebx, [eax-896]
mov ebx, [eax-960]
mov ebx, [eax-1024]
sub eax, 1024
sub ecx, 1024
jnz $read_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -