Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Изменение переменной
- */
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement