Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. // ConsoleApplication5.cpp : Defines the entry point for the console application.
  2.  
  3. #include "stdafx.h"
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <Windows.h>
  7. //de pe stack
  8. void decToBinary(int n)
  9. {
  10. // array to store binary number
  11. int binaryNum[1000];
  12.  
  13. // counter for binary array
  14. int i = 0;
  15. while (n > 0) {
  16.  
  17. // storing remainder in binary array
  18. binaryNum[i] = n % 2;
  19. n = n / 2;
  20. i++;
  21. }
  22.  
  23. // printing binary array in reverse order
  24. for (int j = i - 1; j >= 0; j--)
  25. printf("%d", binaryNum[j]);
  26. }
  27.  
  28. int main() {
  29. unsigned int flag1, flag2;
  30.  
  31. __asm {
  32. pushfd
  33. pop eax
  34.  
  35. xor eax, 200000h
  36. mov flag1, eax
  37.  
  38. push eax
  39. popfd
  40.  
  41. pushfd
  42. pop eax
  43.  
  44. mov flag2, eax
  45. xor eax, 200000h
  46.  
  47. push eax
  48. popfd
  49. }
  50.  
  51. if (flag1 == flag2)
  52. printf("cpuid exist\n");
  53. else return 1;
  54.  
  55. char vendorid[13];
  56.  
  57.  
  58. __asm {
  59. mov eax, 0
  60. cpuid
  61. mov dword ptr vendorid, ebx
  62. mov dword ptr vendorid + 4, edx
  63. mov dword ptr vendorid + 8, ecx
  64.  
  65. }
  66. vendorid[12] = '\0';
  67. printf("%s \n", vendorid);
  68.  
  69. unsigned int eax1;
  70. unsigned int eax2;
  71. unsigned int brandid;
  72. unsigned int flag;
  73. unsigned int edx1;
  74.  
  75.  
  76. __asm {
  77. mov eax, 1
  78. cpuid
  79. mov eax1, eax
  80. mov brandid, ebx
  81. mov edx1, edx
  82.  
  83. }
  84.  
  85. //Model number
  86. unsigned int mask = 248;
  87. eax2 = eax1 & mask;
  88. printf("Model numeber : \n");
  89. eax2 = eax2 >> 4;
  90. decToBinary(eax2);
  91.  
  92. //Family code
  93. mask = 3840;
  94. eax2 = eax1 & mask;
  95. printf("\nFamily code: \n");
  96. eax2 = eax2 >> 8;
  97. decToBinary(eax2);
  98.  
  99. //Extended mode
  100. mask = 1032192;
  101. eax2 = eax1 & mask;
  102. printf("\nExtended Model: 0000 \n");
  103. //eax2 = eax2 >> 8;
  104. decToBinary(eax2);
  105.  
  106. //Brand id
  107. mask = 255;
  108. brandid = brandid & mask;
  109. printf("\nBrand id: Unsupported ");
  110. decToBinary(brandid);
  111.  
  112.  
  113. //------ 4 PROPRIETATI ----------
  114. flag = 2;
  115. flag = flag & edx1;
  116. if (flag == 2) printf("\nVirtual Mode Extension");
  117. else printf("Nu avem Virtual Mode Extension");
  118.  
  119. //Debugging extension
  120. flag = 4;
  121. flag = flag & edx1;
  122. if (flag == 4) printf("\nDebugging Extension");
  123. else printf("Nu avem Debugging Extension");
  124.  
  125. //Page size extension
  126. flag = 8;
  127. flag = flag & edx1;
  128. if (flag == 8) printf("\nPage size extension");
  129. else printf("Nu avem Page size extension");
  130.  
  131. //Time stamp counter
  132. flag = 16;
  133. flag = flag & edx1;
  134. if (flag == 16) printf("\nTime stamp counter");
  135. else printf("Nu avem Time stamp counter");
  136.  
  137. //procesoare logice
  138. SYSTEM_INFO sysinfo;
  139. GetSystemInfo(&sysinfo);
  140. int numCPU = sysinfo.dwNumberOfProcessors;
  141. printf("\nNumar de procesoare logice:%d\n", numCPU);
  142.  
  143. unsigned int count, d1, d2, d3;
  144.  
  145. __asm {
  146. mov eax, 02h
  147. cpuid
  148. mov count, eax
  149. mov d1, ebx
  150. mov d2, ecx
  151. mov d3, edx
  152. }
  153.  
  154. //printf("%x\n", count);
  155. /*printf("%x\n", d1);
  156. printf("%x\n", d2);
  157. printf("%x\n",d3);
  158. */
  159.  
  160. mask = 255;
  161. mask = mask & count;
  162. printf("\n%x", mask);
  163.  
  164. mask = 255;
  165. mask = mask & d1;
  166. printf("\n%x", mask);
  167.  
  168. mask = 255;
  169. mask = mask & d2;
  170. printf("\n%d", mask);
  171.  
  172. mask = 255;
  173. mask = mask & d3;
  174. printf("\n%d\n", mask);
  175.  
  176. return 0;
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement