/** * Изменение переменной */ #include int main() { int var = 0; __asm { mov var, 1 }; std::cout << var << std::endl; system("pause"); return 0; } /** * Получение размера кеша процессора */ #include 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; }