📄 cachebandwidth.cpp
字号:
}
}
void __declspec(naked) __cdecl ReadCacheLineBwd128(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-128]
mov ebx, [eax-256]
mov ebx, [eax-384]
mov ebx, [eax-512]
mov ebx, [eax-640]
mov ebx, [eax-768]
mov ebx, [eax-896]
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 ReadCacheLineBwd256(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-256]
mov ebx, [eax-512]
mov ebx, [eax-768]
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 ReadCacheLineBwd512(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-512]
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 WriteCacheLineBwd16(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]
add eax, ecx
ALIGN 16
$write_loop:
mov [eax-16], ebx
mov [eax-32], ebx
mov [eax-48], ebx
mov [eax-64], ebx
mov [eax-80], ebx
mov [eax-96], ebx
mov [eax-112], ebx
mov [eax-128], ebx
mov [eax-144], ebx
mov [eax-160], ebx
mov [eax-176], ebx
mov [eax-192], ebx
mov [eax-208], ebx
mov [eax-224], ebx
mov [eax-240], ebx
mov [eax-256], ebx
mov [eax-272], ebx
mov [eax-288], ebx
mov [eax-304], ebx
mov [eax-320], ebx
mov [eax-336], ebx
mov [eax-352], ebx
mov [eax-368], ebx
mov [eax-384], ebx
mov [eax-400], ebx
mov [eax-416], ebx
mov [eax-432], ebx
mov [eax-448], ebx
mov [eax-464], ebx
mov [eax-480], ebx
mov [eax-496], ebx
mov [eax-512], ebx
mov [eax-528], ebx
mov [eax-544], ebx
mov [eax-560], ebx
mov [eax-576], ebx
mov [eax-592], ebx
mov [eax-608], ebx
mov [eax-624], ebx
mov [eax-640], ebx
mov [eax-656], ebx
mov [eax-672], ebx
mov [eax-688], ebx
mov [eax-704], ebx
mov [eax-720], ebx
mov [eax-736], ebx
mov [eax-752], ebx
mov [eax-768], ebx
mov [eax-784], ebx
mov [eax-800], ebx
mov [eax-816], ebx
mov [eax-832], ebx
mov [eax-848], ebx
mov [eax-864], ebx
mov [eax-880], ebx
mov [eax-896], ebx
mov [eax-912], ebx
mov [eax-928], ebx
mov [eax-944], ebx
mov [eax-960], ebx
mov [eax-976], ebx
mov [eax-992], ebx
mov [eax-1008], ebx
mov [eax-1024], ebx
sub eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineBwd32(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]
add eax, ecx
ALIGN 16
$write_loop:
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
mov [eax-1024], ebx
sub eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineBwd64(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]
add eax, ecx
ALIGN 16
$write_loop:
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
mov [eax-1024], ebx
sub eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineBwd128(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]
add eax, ecx
ALIGN 16
$write_loop:
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
mov [eax-1024], ebx
sub eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineBwd256(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]
add eax, ecx
ALIGN 16
$write_loop:
mov [eax-256], ebx
mov [eax-512], ebx
mov [eax-768], ebx
mov [eax-1024], ebx
sub eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
void __declspec(naked) __cdecl WriteCacheLineBwd512(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]
add eax, ecx
ALIGN 16
$write_loop:
mov [eax-512], ebx
mov [eax-1024], ebx
sub eax, 1024
sub ecx, 1024
jnz $write_loop
sub edx, 1
jnz $main_loop
pop ebx
ret
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -