Gistrec icon

Ассемблерные побалушки

Gistrec | PRO | 04/23/19 05:50:30 PM UTC | 0 ⭐ | 681 👁️ | Never ⏰ | []
C |

1.36 KB

|

None

|

0 👍

/

0 👎

/**
 * Изменение переменной
 */
 
#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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎