Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication5.cpp : Defines the entry point for the console application.
- #include "stdafx.h"
- #include <stdio.h>
- #include <string.h>
- #include <Windows.h>
- //de pe stack
- void decToBinary(int n)
- {
- // array to store binary number
- int binaryNum[1000];
- // counter for binary array
- int i = 0;
- while (n > 0) {
- // storing remainder in binary array
- binaryNum[i] = n % 2;
- n = n / 2;
- i++;
- }
- // printing binary array in reverse order
- for (int j = i - 1; j >= 0; j--)
- printf("%d", binaryNum[j]);
- }
- int main() {
- unsigned int flag1, flag2;
- __asm {
- pushfd
- pop eax
- xor eax, 200000h
- mov flag1, eax
- push eax
- popfd
- pushfd
- pop eax
- mov flag2, eax
- xor eax, 200000h
- push eax
- popfd
- }
- if (flag1 == flag2)
- printf("cpuid exist\n");
- else return 1;
- char vendorid[13];
- __asm {
- mov eax, 0
- cpuid
- mov dword ptr vendorid, ebx
- mov dword ptr vendorid + 4, edx
- mov dword ptr vendorid + 8, ecx
- }
- vendorid[12] = '\0';
- printf("%s \n", vendorid);
- unsigned int eax1;
- unsigned int eax2;
- unsigned int brandid;
- unsigned int flag;
- unsigned int edx1;
- __asm {
- mov eax, 1
- cpuid
- mov eax1, eax
- mov brandid, ebx
- mov edx1, edx
- }
- //Model number
- unsigned int mask = 248;
- eax2 = eax1 & mask;
- printf("Model numeber : \n");
- eax2 = eax2 >> 4;
- decToBinary(eax2);
- //Family code
- mask = 3840;
- eax2 = eax1 & mask;
- printf("\nFamily code: \n");
- eax2 = eax2 >> 8;
- decToBinary(eax2);
- //Extended mode
- mask = 1032192;
- eax2 = eax1 & mask;
- printf("\nExtended Model: 0000 \n");
- //eax2 = eax2 >> 8;
- decToBinary(eax2);
- //Brand id
- mask = 255;
- brandid = brandid & mask;
- printf("\nBrand id: Unsupported ");
- decToBinary(brandid);
- //------ 4 PROPRIETATI ----------
- flag = 2;
- flag = flag & edx1;
- if (flag == 2) printf("\nVirtual Mode Extension");
- else printf("Nu avem Virtual Mode Extension");
- //Debugging extension
- flag = 4;
- flag = flag & edx1;
- if (flag == 4) printf("\nDebugging Extension");
- else printf("Nu avem Debugging Extension");
- //Page size extension
- flag = 8;
- flag = flag & edx1;
- if (flag == 8) printf("\nPage size extension");
- else printf("Nu avem Page size extension");
- //Time stamp counter
- flag = 16;
- flag = flag & edx1;
- if (flag == 16) printf("\nTime stamp counter");
- else printf("Nu avem Time stamp counter");
- //procesoare logice
- SYSTEM_INFO sysinfo;
- GetSystemInfo(&sysinfo);
- int numCPU = sysinfo.dwNumberOfProcessors;
- printf("\nNumar de procesoare logice:%d\n", numCPU);
- unsigned int count, d1, d2, d3;
- __asm {
- mov eax, 02h
- cpuid
- mov count, eax
- mov d1, ebx
- mov d2, ecx
- mov d3, edx
- }
- //printf("%x\n", count);
- /*printf("%x\n", d1);
- printf("%x\n", d2);
- printf("%x\n",d3);
- */
- mask = 255;
- mask = mask & count;
- printf("\n%x", mask);
- mask = 255;
- mask = mask & d1;
- printf("\n%x", mask);
- mask = 255;
- mask = mask & d2;
- printf("\n%d", mask);
- mask = 255;
- mask = mask & d3;
- printf("\n%d\n", mask);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement