/**
* Изменение переменной
*/
#include <iostream>
int main() {
int var = 0;
__asm {
mov var, 1
};
std::cout << var << std::endl;
system("pause");
return 0;
}
/**
* Получение размера кеша процессора
*/
#include <iostream>
int main() {
uint32_t reg;
// Проверить: wmic cpu get L2CacheSize
// https://en.wikipedia.org/wiki/CPUID#EAX=80000006h:_Extended_L2_Cache_Features
__asm {
// EAX=0x80000002, 0x80000003, 0x80000004 и т.д.
// Позволяет получить некоторые данные о процессоре
// Для того, чтобы их использовать, нужно проверить поддерживает ли CPU эти команды
// Поместив в EAX значение 0x80000000 - возвращаемое значение должно быть больше 0x0000006
//mov eax, 0x80000000
//cpuid
// Возвращает данные L2 кеша в ECX
// Включая размер линии в байтах, типа ассоциативности (кодируется 4 битами) и размер кеша
//cmp eax, 0x80000006
//jl error
mov eax, 0x80000006
cpuid
mov reg, ecx
};
std::cout << (int)(reg & 0xff) << std::endl;
system("pause");
return 0;
}
Comments
0 B
|👍
/👎