Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - eloaders

Pagine: 1 [2] 3
16
Programmazione / Gambas3 Doxygen
« il: 12 Novembre 2016, 14:20:19 »
Is it possible to use Doxygen in application written using Gambas3?


17
Programmazione / Re:Gambas GPU
« il: 11 Novembre 2016, 23:06:28 »
The library can also be written in C. If it works I would use it with a Gambas Library and Extern

18
Programmazione / Gambas GPU
« il: 09 Novembre 2016, 11:50:33 »
What a library can be used in gambas to detect graphics card?
Currently I have something like this. I'm looking for a few days as I can do this using any library.

Codice: [Seleziona]
Public Sub grafika()
  Dim available_resolutions, Kernel_driver_in_use As String
  Dim rozdzielczosc, gpu, memory_prefetchable, memory_non_prefetchable As String
  Dim GLIXNFO As String
  Dim GLX As String[]
  Dim strings As String
 
  Try Exec ["/bin/bash", "/usr/bin/i-nex-lspci", "nonprefetchable"] Wait To memory_non_prefetchable
  Try Exec ["/bin/bash", "/usr/bin/i-nex-lspci", "prefetchable"] Wait To memory_prefetchable
 
  Try Exec ["glxinfo"] Wait To GLIXNFO
  GLX = Split(GLIXNFO, "\n", "")
  For Each strings In GLX
   If strings Like "*OpenGL vendor string:*" Then
    Try Label105.Text = "OpenGL Vendor: " & Replace(strings, "OpenGL vendor string:", "")
   Endif
   If strings Like "*OpenGL renderer string:*" Then
    Try Label106.Text = "OpenGL Renderer: " & Replace(strings, "OpenGL renderer string:", "")
   Endif
   If strings Like "*OpenGL version string:*" Then
    Try Label107.Text = "OpenGL Version: " & Replace(strings, "OpenGL version string:", "")
   Endif
   If strings Like "*server glx vendor string:*" Then
    Try Label220.Text = "Server glx vendor: " & Replace(strings, "server glx vendor string:", "")
   Endif
   If strings Like "*server glx version string:*" Then
    Try Label221.Text = "Server glx version: " & Replace(strings, "server glx version string:", "")
   Endif
   If strings Like "*client glx vendor string:*" Then
    Try Label222.Text = "Client glx vendor: " & Replace(strings, "client glx vendor string:", "")
   Endif
   If strings Like "*client glx version string:*" Then
    Try Label224.Text = "Client glx version: " & Replace(strings, "client glx version string:", "")
   Endif
   If strings Like "*GLX version:*" Then
    Try Label225.Text = "GLX version: " & Replace(strings, "GLX version:", "")
   Endif
   If strings Like "*OpenGL ES profile version string:*" Then
    Try Label246.Text = "OpenGLES PVS: " & Replace(strings, "OpenGL ES profile version string:", "")
   Endif
   If strings Like "*OpenGL ES profile shading language version string:*" Then
    Try Label247.Text = "OpenGLES PSLVS: " & Replace(strings, "OpenGL ES profile shading language version string:", "")
   Endif
  Next

  Shell ChkPrm.ChkExecDir("lspci") & " -v -s `lspci | awk '/VGA/{print $1}'` | grep \"Kernel driver in use:\" | cut -d ':' -f 2" Wait To Kernel_driver_in_use
  Shell ChkPrm.ChkExecDir("lspci") & " | grep 'VGA' | cut -d ':' -f3 | cut -d '(' -f 1 | sed -n '1p'" Wait To gpu
  Shell ChkPrm.ChkExecDir("xrandr") & " | grep current | grep 'Screen 0:' | cut -d ':' -f 2" Wait To available_resolutions
  Shell ChkPrm.ChkExecDir("xdpyinfo") & " | grep 'dimensions:' | cut -d ':' -f 2" Wait To rozdzielczosc
  If IsNull(Kernel_driver_in_use) Or IsSpace(Kernel_driver_in_use) = True Then
   Try Exec [ChkPrm.ChkExecDir("xdriinfo")] Wait To Kernel_driver_in_use
  Endif

  Label136.Text = "Kernel driver in use: " & Replace(Kernel_driver_in_use, "\n", "")
  Try Label64.Text = "Total Memory prefetchable: " & Replace(memory_prefetchable, "\n", " - ")
  Try Label146.Text = "Total Memory non-prefetchable: " & Replace(memory_non_prefetchable, "\n", " - ")
  Label108.Text = "Present resolution: " & Replace(rozdzielczosc, "\n", "")
  TextBox1.Text = RTrim(Replace(gpu, "\n", ""))
  Label109.Text = Replace(available_resolutions, "\n", "")
 
  'GPU Logo Detection
  If RTrim(Replace(gpu, "\n", "")) Like "*ati*" Then
  Finfosys.PictureBox1.Picture = Picture["Data/GPU_LOGO/ati.png"]
  Finfosys.PictureBox1.Name = "ati.png"
  Endif
 
  If RTrim(Replace(gpu, "\n", "")) Like "*intel*" Then
  Finfosys.PictureBox1.Picture = Picture["Data/GPU_LOGO/intel.png"]
  Finfosys.PictureBox1.Name = "intel.png"
  Endif
 
  If RTrim(Replace(gpu, "\n", "")) Like "*nVidia*" Then
  Finfosys.PictureBox1.Picture = Picture["Data/GPU_LOGO/nvidia.png"]
  Finfosys.PictureBox1.Name = "nvidia.png"
  Endif

  If RTrim(Replace(gpu, "\n", "")) Like "*VirtualBox*" Then
  Finfosys.PictureBox1.Picture = Picture["Data/GPU_LOGO/virtualbox.png"]
  Finfosys.PictureBox1.Name = "virtualbox.png"
  Endif
 
  If RTrim(Replace(gpu, "\n", "")) Like "*VMware*" Then
  Finfosys.PictureBox1.Picture = Picture["Data/GPU_LOGO/vmware.png"]
  Finfosys.PictureBox1.Name = "vmware.png"
  Endif
  'GPU Logo Detection End
 
  ComboBox8.Index = 1
End

19
Programmazione / Re:Libcpuid14 Extern
« il: 06 Novembre 2016, 18:31:23 »
So now the code looks like this.
It might be worthwhile to update the wiki?

Codice: [Seleziona]
' Gambas module file

' The module was written by vuott from http://www.gambas-it.org/
' http://www.gambas-it.org/smf/index.php?action=profile;u=402
Library "libcpuid:14.0.0"

Private Enum CPU_HINT_SSE_SIZE_AUTH = 0, NUM_CPU_HINTS

Private Enum CPU_FEATURE_FPU,
             CPU_FEATURE_VME,
             CPU_FEATURE_DE,
             CPU_FEATURE_PSE,
             CPU_FEATURE_TSC,
             CPU_FEATURE_MSR,
             CPU_FEATURE_PAE,
             CPU_FEATURE_MCE, '!< Machine check exception */
             CPU_FEATURE_CX8, '!< CMPXCHG8B instruction supported */
             CPU_FEATURE_APIC, '!< APIC support */
             CPU_FEATURE_MTRR, '!< Memory type range registers */
             CPU_FEATURE_SEP, '!< SYSENTER / SYSEXIT instructions supported */
             CPU_FEATURE_PGE, '!< Page global enable */
             CPU_FEATURE_MCA, '!< Machine check architecture */
             CPU_FEATURE_CMOV, '!< CMOVxx instructions supported */
             CPU_FEATURE_PAT, '!< Page attribute table */
             CPU_FEATURE_PSE36, '!< 36-bit page address extension */
             CPU_FEATURE_PN, '!< Processor serial # implemented (Intel P3 only) */
             CPU_FEATURE_CLFLUSH, '!< CLFLUSH instruction supported */
             CPU_FEATURE_DTS, '!< Debug store supported */
             CPU_FEATURE_ACPI, '!< ACPI support (power states) */
             CPU_FEATURE_MMX, '!< MMX instruction set supported */
             CPU_FEATURE_FXSR, '!< FXSAVE / FXRSTOR supported */
             CPU_FEATURE_SSE, '!< Streaming-SIMD Extensions (SSE) supported */
             CPU_FEATURE_SSE2, '!< SSE2 instructions supported */
             CPU_FEATURE_SS, '!< Self-snoop */
             CPU_FEATURE_HT, '!< Hyper-threading supported (but might be disabled) */
             CPU_FEATURE_TM, '!< Thermal monitor */
             CPU_FEATURE_IA64, '!< IA64 supported (Itanium only) */
             CPU_FEATURE_PBE, '!< Pending-break enable */
             CPU_FEATURE_PNI, '!< PNI (SSE3) instructions supported */
             CPU_FEATURE_PCLMUL, '!< PCLMULQDQ instruction supported */
             CPU_FEATURE_DTS64, '!< 64-bit Debug store supported */
             CPU_FEATURE_MONITOR, '!< MONITOR / MWAIT supported */
             CPU_FEATURE_DS_CPL, '!< CPL Qualified Debug Store */
             CPU_FEATURE_VMX, '!< Virtualization technology supported */
             CPU_FEATURE_SMX, '!< Safer mode exceptions */
             CPU_FEATURE_EST, '!< Enhanced SpeedStep */
             CPU_FEATURE_TM2, '!< Thermal monitor 2 */
             CPU_FEATURE_SSSE3, '!< SSSE3 instructionss supported (this is different from SSE3!) */
             CPU_FEATURE_CID, '!< Context ID supported */
             CPU_FEATURE_CX16, '!< CMPXCHG16B instruction supported */
             CPU_FEATURE_XTPR, '!< Send Task Priority Messages disable */
             CPU_FEATURE_PDCM, '!< Performance capabilities MSR supported */
             CPU_FEATURE_DCA, '!< Direct cache access supported */
             CPU_FEATURE_SSE4_1, '!< SSE 4.1 instructions supported */
             CPU_FEATURE_SSE4_2, '!< SSE 4.2 instructions supported */
             CPU_FEATURE_SYSCALL, '!< SYSCALL / SYSRET instructions supported */
             CPU_FEATURE_XD, '!< Execute disable bit supported */
             CPU_FEATURE_MOVBE, '!< MOVBE instruction supported */
             CPU_FEATURE_POPCNT, '!< POPCNT instruction supported */
             CPU_FEATURE_AES, '!< AES* instructions supported */
             CPU_FEATURE_XSAVE, '!< XSAVE/XRSTOR/etc instructions supported */
             CPU_FEATURE_OSXSAVE, '!< non-privileged copy of OSXSAVE supported */
             CPU_FEATURE_AVX, '!< Advanced vector extensions supported */
             CPU_FEATURE_MMXEXT, '!< AMD MMX-extended instructions supported */
             CPU_FEATURE_3DNOW, '!< AMD 3DNow! instructions supported */
             CPU_FEATURE_3DNOWEXT, '!< AMD 3DNow! extended instructions supported */
             CPU_FEATURE_NX, '!< No-execute bit supported */
             CPU_FEATURE_FXSR_OPT, '!< FFXSR: FXSAVE and FXRSTOR optimizations */
             CPU_FEATURE_RDTSCP, '!< RDTSCP instruction supported (AMD-only) */
             CPU_FEATURE_LM, '!< Long mode (x86_64/EM64T) supported */
             CPU_FEATURE_LAHF_LM, '!< LAHF/SAHF supported in 64-bit mode */
             CPU_FEATURE_CMP_LEGACY, '!< core multi-processing legacy mode */
             CPU_FEATURE_SVM, '!< AMD Secure virtual machine */
             CPU_FEATURE_ABM, '!< LZCNT instruction support */
             CPU_FEATURE_MISALIGNSSE, '!< Misaligned SSE supported */
             CPU_FEATURE_SSE4A, '!< SSE 4a from AMD */
             CPU_FEATURE_3DNOWPREFETCH, '!< PREFETCH/PREFETCHW support */
             CPU_FEATURE_OSVW, '!< OS Visible Workaround (AMD) */
             CPU_FEATURE_IBS, '!< Instruction-based sampling */
             CPU_FEATURE_SSE5, '!< SSE 5 instructions supported (deprecated, will never be 1) */
             CPU_FEATURE_SKINIT, '!< SKINIT / STGI supported */
             CPU_FEATURE_WDT, '!< Watchdog timer support */
             CPU_FEATURE_TS, '!< Temperature sensor */
             CPU_FEATURE_FID, '!< Frequency ID control */
             CPU_FEATURE_VID, '!< Voltage ID control */
             CPU_FEATURE_TTP, '!< THERMTRIP */
             CPU_FEATURE_TM_AMD, '!< AMD-specified hardware thermal control */
             CPU_FEATURE_STC, '!< Software thermal control */
             CPU_FEATURE_100MHZSTEPS, '!< 100 MHz multiplier control */
             CPU_FEATURE_HWPSTATE, '!< Hardware P-state control */
             CPU_FEATURE_CONSTANT_TSC, '!< TSC ticks at constant rate */
             CPU_FEATURE_XOP, '!< The XOP instruction set (same as the old CPU_FEATURE_SSE5) */
             CPU_FEATURE_FMA3, '!< The FMA3 instruction set */
             CPU_FEATURE_FMA4, '!< The FMA4 instruction set */
             CPU_FEATURE_TBM, '!< Trailing bit manipulation instruction support */
             CPU_FEATURE_F16C, '!< 16-bit FP convert instruction support */
             CPU_FEATURE_RDRAND, '!< RdRand instruction */
             CPU_FEATURE_X2APIC, '!< x2APIC, APIC_BASE.EXTD, MSRs 0000_0800h...0000_0BFFh 64-bit ICR (+030h but not +031h), no DFR (+00Eh), SELF_IPI (+040h) also see standard level 0000_000Bh */
             CPU_FEATURE_CPB, '!< Core performance boost */
             CPU_FEATURE_APERFMPERF, '!< MPERF/APERF MSRs support */
             CPU_FEATURE_PFI, '!< Processor Feedback Interface support */
             CPU_FEATURE_PA, '!< Processor accumulator */
             CPU_FEATURE_AVX2, '!< AVX2 instructions */
             CPU_FEATURE_BMI1, '!< BMI1 instructions */
             CPU_FEATURE_BMI2, '!< BMI2 instructions */
             CPU_FEATURE_HLE, '!< Hardware Lock Elision prefixes */
             CPU_FEATURE_RTM, '!< Restricted Transactional Memory instructions */
             CPU_FEATURE_AVX512F, '!< AVX-512 Foundation */
             CPU_FEATURE_AVX512DQ, '!< AVX-512 Double/Quad granular insns */
             CPU_FEATURE_AVX512PF, '!< AVX-512 Prefetch */
             CPU_FEATURE_AVX512ER, '!< AVX-512 Exponential/Reciprocal */
             CPU_FEATURE_AVX512CD, '!< AVX-512 Conflict detection */
             CPU_FEATURE_SHA_NI, '!< SHA-1/SHA-256 instructions */
             CPU_FEATURE_AVX512BW, '!< AVX-512 Byte/Word granular insns */
             CPU_FEATURE_AVX512VL, '!< AVX-512 128/256 vector length extensions */
             CPU_FEATURE_SGX, '!< SGX extensions. Non-autoritative, check cpu_id_t::sgx::present to verify presence */
             CPU_FEATURE_RDSEED, '!< RDSEED instruction */
             CPU_FEATURE_ADX,
             NUM_CPU_FEATURES

Private Enum VENDOR_INTEL = 0,  '/*!< Intel CPU */
           VENDOR_AMD,        '/*!< AMD CPU */
           VENDOR_CYRIX,      '/*!< Cyrix CPU */
           VENDOR_NEXGEN,     '/*!< NexGen CPU */
           VENDOR_TRANSMETA,  '/*!< Transmeta CPU */
           VENDOR_UMC,        '/*!< x86 CPU by UMC */
           VENDOR_CENTAUR,    '/*!< x86 CPU by IDT */
           VENDOR_RISE,       '/*!< x86 CPU by Rise Technology */
           VENDOR_SIS,        '/*!< x86 CPU by SiS */
           VENDOR_NSC,        '/*!< x86 CPU by National Semiconductor */
           NUM_CPU_VENDORS,   '/*!< Valid CPU vendor ids: 0..NUM_CPU_VENDORS - 1 */
             VENDOR_UNKNOWN = -1

Public Struct cpu_list_t
num_entries As Integer
names As String
End Struct

Public Struct cpu_raw_data_t
  basic_cpuid[32, 4] As Integer
  ext_cpuid[32, 4] As Integer
  intel_fn4[8, 4] As Integer
  intel_fn11[4, 4] As Integer
  intel_fn12h[4, 4] As Integer
  intel_fn14h[4, 4] As Integer
End Struct

Public Struct cpu_sgx_t
  present As Integer
  max_enclave_32bit As Byte
  max_enclave_64bit As Byte
  flags[14] As Byte
  num_epc_sections As Integer
  misc_select As Integer
  secs_attributes As Long
  secs_xfrm As Long
End Struct

Public Struct cpu_id_t
  vendor_str[16] As Byte                   '       0 -  15
  brand_str[64] As Byte                     '     16 -  79
  vendor As Integer                            '     80 -  83
  flags[124] As Byte                            '    84 - 211
  family As Integer                              '  212 - 215
  model As Integer                             '  216 - 219
  stepping As Integer                         '  220 - 223
  ext_family As Integer                      '  224 - 227
  ext_model As Integer                     '  228 - 231
  num_cores As Integer                    '  232 - 235
  num_logical_cpus As Integer       '  236 - 239
  total_logical_cpus As Integer       '  240 - 243
  l1_data_cache As Integer             '  244 - 247
  l1_instruction_cache As Integer  '  248 - 251
  l2_cache As Integer                       '  252 - 255
  l3_cache As Integer                       '  256 - 259
  l4_cache As Integer                       '  260 - 263
  l1_assoc As Integer                       '  264 - 267
  l2_assoc As Integer                       '  268 - 271
  l3_assoc As Integer                       '  272 - 275
  l4_assoc As Integer                       '  276 - 279
  l1_cacheline As Integer                '  280 - 283
  l2_cacheline As Integer                '  284 - 287
  l3_cacheline As Integer                '  288 - 291
  l4_cacheline As Integer                '  292 - 295
  cpu_codename[64] As Byte         '  296 - 359
  sse_size As Integer                       '  360 - 363
  detection_hints[16] As Byte         '  364 - 379
  sgx As Struct Cpu_sgx_t              '  380 - 431
End Struct

Public Struct cpu_mark_t
  tsc As Long
  sys_clock As Long
End Struct

Public Struct cpu_epc_t
  start_addr As Long
length As Long
End Struct

' int cpuid_present(void)
' Checks if the CPUID instruction is supported.
Private Extern cpuid_present() As Integer

' int cpuid_get_raw_data(struct cpu_raw_data_t* data)
' Obtains the raw CPUID data from the current CPU.
Private Extern cpuid_get_raw_data(data As Cpu_raw_data_t) As Integer

'/ * *
' * @brief Returns the short textual representation Of a CPU flag
' * @param feature - the feature, whose textual representation Is Wanted.
' * @returns a constant string Like "fpu", "tsc", "sse2", etc.
' * @note the names Of the returned flags are compatible With those From
' * / proc / cpuinfo In Linux, With the exception Of `tm_amd'
' * /
'Const char * cpu_feature_str(cpu_feature_t feature);
Private Extern cpu_feature_str(cpu_feature_t As Integer) As String

' const char* cpuid_error(void)
' Returns textual description of the last error.
Private Extern cpuid_error() As String

' int cpu_identify(struct cpu_raw_data_t* raw, struct cpu_id_t* data)
' Identifies the CPU.
Private Extern cpu_identify(raw As Cpu_raw_data_t, data As Cpu_id_t) As Integer

' void cpu_tsc_mark(struct cpu_mark_t* mark)
' Store TSC and timing info.
Private Extern cpu_tsc_mark(mark As Cpu_mark_t)

' void cpu_tsc_unmark(struct cpu_mark_t* mark)
' Calculate TSC and timing difference.
Private Extern cpu_tsc_unmark(mark As Cpu_mark_t)

' int cpu_clock(void)
' Get the CPU clock frequency (all-in-one method).
Private Extern cpu_clock() As Integer

'cpu_vendor_t cpuid_get_vendor(void);
Private Extern cpuid_get_vendor() As Integer

'void cpuid_get_cpu_list(cpu_vendor_t vendor, struct cpu_list_t* list);
Private Extern cpuid_get_cpu_list(cpu_vendor_t As String, list As Cpu_list_t) As String
' int cpu_clock_by_os(void)
' Returns the CPU clock, as reported by the OS.
Private Extern cpu_clock_by_os() As Integer

' int cpu_clock_by_ic(int millis, int runs)
' Measure the CPU clock frequency using instruction-counting.
Private Extern cpu_clock_by_ic(millis As Integer, runs As Integer) As Integer

' int cpu_clock_measure(int millis, int quad_check)
' Measure the CPU clock frequency.
Private Extern cpu_clock_measure(millis As Integer, quad_check As Integer) As Integer


Public Sub Main()

  Dim raw As New Cpu_raw_data_t
  Dim data As New Cpu_id_t
  Dim mark As New Cpu_mark_t
  Dim names As New Cpu_list_t
  Dim au As String
  Dim dataflags As Pointer
  Dim i As Integer
    If Not cpuid_present() Then Error.Raise("Sorry, your CPU doesn't support CPUID !")
    dataflags = Alloc(SizeOf(gb.Byte), 432)
    If cpuid_get_raw_data(raw) < 0 Then
      Error.Raise("Sorry, cannot get the CPUID raw data.\nError: " & cpuid_error())
    Endif
    If cpu_identify(raw, data) < 0 Then
      Error.Raise("Sorry, CPU identification failed.\nError: " & cpuid_error())
    Endif
    If cpu_identify(raw, dataflags) < 0 Then
      Error.Raise("Sorry, CPU identification failed.\nError: " & cpuid_error())
    Endif

    cpu_tsc_mark(mark)
    cpu_tsc_unmark(mark)



    Print "   \"VENDOR_STR\":         "; String@(data.vendor_str.data)
    Print "   \"CPU_CODENAME\":       "; String@(data.cpu_codename.data)
    Print "   \"BRAND_STR\":          "; String@(data.brand_str.data)
    Print "   \"VENDOR\":             "; data.vendor
    Print "   \"NUM_CORES\":          "; data.num_cores
    Print "   \"NUM_LOGICAL_CPUS\":   "; data.num_logical_cpus
    Print "   \"TOTAL_LOGICAL_CPUS\": "; data.total_logical_cpus
    Print "   \"FAMILY\":             "; data.family
    Print "   \"MODEL\":              "; data.model
    Print "   \"STEPPING\":           "; data.stepping
    Print "   \"EXT_FAMILY\":         "; data.ext_family
    Print "   \"EXT_MODEL\":          "; data.ext_model
    au = IIf(data.detection_hints[CPU_HINT_SSE_SIZE_AUTH], "(authoritative)", "(non-authoritative)")
    Print "   \"SSE_SIZE\":           "; data.sse_size; " bit "; au
    Print "   \"CPU_CLOCK\":          "; cpu_clock(); " Mhz"
    Print "   \"CPU_CLOCK_BY_OS\":    "; cpu_clock_by_os(); " Mhz"
    Print "   \"CPU_CLOCK_BY_IC\":    "; cpu_clock_by_ic(25, 16); " Mhz"
    Print "   \"CPU_CLOCK_MEASURE\":  "; cpu_clock_measure(400, 1); " Mhz"
    Print "   \"L1_DATA_CACHE\":      "; data.l1_data_cache; " KB"
    Print "   \"L1_INSTRUCTION_CACHE\": "; data.l1_instruction_cache; " KB"
    Print "   \"L1_CACHELINE\":       "; data.l1_cacheline; " bytes"
    Print "   \"L1_ASSOC\":           "; data.l1_assoc; "-way"
    Print "   \"L2_CACHE\":           "; data.l2_cache; " KB"
    Print "   \"L2_ASSOC\":           "; data.l2_assoc; "-way"
    Print "   \"L2_CACHELINE\":       "; data.l2_cacheline; " bytes"
    Print "   \"L3_CACHE\":           "; data.l3_cache; " KB"
    Print "   \"L3_ASSOC\":           "; data.l3_assoc; "-way"
    Print "   \"L3_CACHELINE\":       "; data.l3_cacheline; " bytes"
    Print "   \"L4_CACHE\":           "; data.l4_cache; " KB"
    Print "   \"L4_ASSOC\":           "; data.l4_assoc; "-way"
    Print "   \"L4_CACHELINE\":       "; data.l4_cacheline; " bytes"
    Print "   \"MARK_TSC\":           "; mark.tsc
    Print "   \"MARK_SYS_CLOCK\":     "; mark.sys_clock
    For i = 0 To 109
     Print "   \"FEATURE\":           "; cpu_feature_str(i); IIf(Byte@(dataflags + (i + 84)), " Present", " Absent")
    Next
   
    Free(dataflags)
End


It requires the removal of some unnecessary things. but it works

20
Programmazione / Re:Libcpuid14 Extern
« il: 05 Novembre 2016, 22:55:53 »
So i must use Dim data As Pointer, not as cpu_id_t

And i must use:

Dim data As New cpu_id_t
and for flags
Dim data_flags As Pointer?

21
Programmazione / Re:Libcpuid14 Extern
« il: 05 Novembre 2016, 19:27:46 »
Ok, i create some code to check flags.

First from you:
.......
For i = 84 To 211
      Print i - 84, Byte@(data + i)
Next
.......

And my code:
..............
For i = 0 To 127
     Print i, data.flags
Next
..............

First return me:
Codice: [Seleziona]
0       1
1       1
2       1
3       1
4       1
5       1
6       1
7       1
8       1
9       1
10      1
11      1
12      1
13      1
14      1
15      1
16      1
17      0
18      1
19      0
20      0
21      1
22      1
23      1
24      1
25      0
26      1
27      0
28      0
29      0
30      1
31      0
32      0
33      0
34      0
35      0
36      0
37      0
38      0
39      0
40      0
41      1
42      0
43      0
44      0
45      0
46      0
47      1
48      0
49      0
50      0
51      0
52      0
53      0
54      0
55      1
56      1
57      1
58      1
59      1
60      1
61      1
62      1
63      1
64      1
65      0
66      0
67      0
68      1
69      0
70      0
71      0
72      0
73      0
74      1
75      1
76      1
77      1
78      1
79      1
80      1
81      0
82      0
83      0
84      0
85      0
86      0
87      0
88      0
89      0
90      0
91      0
92      0
93      0
94      0
95      0
96      0
97      0
98      0
99      0
100     0
101     0
102     0
103     0
104     0
105     0
106     0
107     0
108     0
109     0
110     0
111     0
112     0
113     0
114     0
115     0
116     0
117     0
118     0
119     0
120     0
121     0
122     0
123     0
124     0
125     0
126     0
127     0

Two return me:
Codice: [Seleziona]
0       1
1       1
2       1
3       1
4       1
5       1
6       1
7       1
8       1
9       1
10      1
11      1
12      1
13      0
14      1
15      0
16      0
17      1
18      1
19      1
20      1
21      0
22      1
23      0
24      0
25      0
26      1
27      0
28      0
29      0
30      0
31      0
32      0
33      0
34      0
35      0
36      0
37      1
38      0
39      0
40      0
41      0
42      0
43      1
44      0
45      0
46      0
47      0
48      0
49      0
50      0
51      1
52      1
53      1
54      1
55      1
56      1
57      1
58      1
59      1
60      1
61      0
62      0
63      0
64      1
65      0
66      0
67      0
68      0
69      0
70      1
71      1
72      1
73      1
74      1
75      1
76      1
77      0
78      0
79      0
80      0
81      0
82      0
83      0
84      0
85      0
86      0
87      0
88      0
89      0
90      0
91      0
92      0
93      0
94      0
95      0
96      0
97      0
98      0
99      0
100     0
101     0
102     0
103     0
104     0
105     0
106     0
107     0
108     0
109     0
110     0
111     0
112     0
113     0
114     0
115     0
116     0
117     0
118     0
119     0
120     0
121     0
122     0
123     0
124     15
125     0
126     0
127     0

Your code gives me the correct values
0 = False and 1 = True

CPU_FEATURE_SSE2,   /*!< SSE2 instructions supported */ is the 23

my code returns me not correct value
your returns me true value


22
Programmazione / Re:Libcpuid14 Extern
« il: 05 Novembre 2016, 17:05:33 »
Ok, I prepared something, but does not work correctly.

Codice: [Seleziona]
' Gambas module file

' The module was written by vuott from http://www.gambas-it.org/
' http://www.gambas-it.org/smf/index.php?action=profile;u=402
Library "libcpuid:14.0.0"

Private Enum CPU_HINT_SSE_SIZE_AUTH = 0, NUM_CPU_HINTS

Private Enum CPU_FEATURE_FPU = 0,
             CPU_FEATURE_VME,
             CPU_FEATURE_DE,
             CPU_FEATURE_PSE,
             CPU_FEATURE_TSC,
             CPU_FEATURE_MSR,
             CPU_FEATURE_PAE,
             CPU_FEATURE_MCE, '!< Machine check exception */
             CPU_FEATURE_CX8, '!< CMPXCHG8B instruction supported */
             CPU_FEATURE_APIC, '!< APIC support */
             CPU_FEATURE_MTRR, '!< Memory type range registers */
             CPU_FEATURE_SEP, '!< SYSENTER / SYSEXIT instructions supported */
             CPU_FEATURE_PGE, '!< Page global enable */
             CPU_FEATURE_MCA, '!< Machine check architecture */
             CPU_FEATURE_CMOV, '!< CMOVxx instructions supported */
             CPU_FEATURE_PAT, '!< Page attribute table */
             CPU_FEATURE_PSE36, '!< 36-bit page address extension */
             CPU_FEATURE_PN, '!< Processor serial # implemented (Intel P3 only) */
             CPU_FEATURE_CLFLUSH, '!< CLFLUSH instruction supported */
             CPU_FEATURE_DTS, '!< Debug store supported */
             CPU_FEATURE_ACPI, '!< ACPI support (power states) */
             CPU_FEATURE_MMX, '!< MMX instruction set supported */
             CPU_FEATURE_FXSR, '!< FXSAVE / FXRSTOR supported */
             CPU_FEATURE_SSE, '!< Streaming-SIMD Extensions (SSE) supported */
             CPU_FEATURE_SSE2, '!< SSE2 instructions supported */
             CPU_FEATURE_SS, '!< Self-snoop */
             CPU_FEATURE_HT, '!< Hyper-threading supported (but might be disabled) */
             CPU_FEATURE_TM, '!< Thermal monitor */
             CPU_FEATURE_IA64, '!< IA64 supported (Itanium only) */
             CPU_FEATURE_PBE, '!< Pending-break enable */
             CPU_FEATURE_PNI, '!< PNI (SSE3) instructions supported */
             CPU_FEATURE_PCLMUL, '!< PCLMULQDQ instruction supported */
             CPU_FEATURE_DTS64, '!< 64-bit Debug store supported */
             CPU_FEATURE_MONITOR, '!< MONITOR / MWAIT supported */
             CPU_FEATURE_DS_CPL, '!< CPL Qualified Debug Store */
             CPU_FEATURE_VMX, '!< Virtualization technology supported */
             CPU_FEATURE_SMX, '!< Safer mode exceptions */
             CPU_FEATURE_EST, '!< Enhanced SpeedStep */
             CPU_FEATURE_TM2, '!< Thermal monitor 2 */
             CPU_FEATURE_SSSE3, '!< SSSE3 instructionss supported (this is different from SSE3!) */
             CPU_FEATURE_CID, '!< Context ID supported */
             CPU_FEATURE_CX16, '!< CMPXCHG16B instruction supported */
             CPU_FEATURE_XTPR, '!< Send Task Priority Messages disable */
             CPU_FEATURE_PDCM, '!< Performance capabilities MSR supported */
             CPU_FEATURE_DCA, '!< Direct cache access supported */
             CPU_FEATURE_SSE4_1, '!< SSE 4.1 instructions supported */
             CPU_FEATURE_SSE4_2, '!< SSE 4.2 instructions supported */
             CPU_FEATURE_SYSCALL, '!< SYSCALL / SYSRET instructions supported */
             CPU_FEATURE_XD, '!< Execute disable bit supported */
             CPU_FEATURE_MOVBE, '!< MOVBE instruction supported */
             CPU_FEATURE_POPCNT, '!< POPCNT instruction supported */
             CPU_FEATURE_AES, '!< AES* instructions supported */
             CPU_FEATURE_XSAVE, '!< XSAVE/XRSTOR/etc instructions supported */
             CPU_FEATURE_OSXSAVE, '!< non-privileged copy of OSXSAVE supported */
             CPU_FEATURE_AVX, '!< Advanced vector extensions supported */
             CPU_FEATURE_MMXEXT, '!< AMD MMX-extended instructions supported */
             CPU_FEATURE_3DNOW, '!< AMD 3DNow! instructions supported */
             CPU_FEATURE_3DNOWEXT, '!< AMD 3DNow! extended instructions supported */
             CPU_FEATURE_NX, '!< No-execute bit supported */
             CPU_FEATURE_FXSR_OPT, '!< FFXSR: FXSAVE and FXRSTOR optimizations */
             CPU_FEATURE_RDTSCP, '!< RDTSCP instruction supported (AMD-only) */
             CPU_FEATURE_LM, '!< Long mode (x86_64/EM64T) supported */
             CPU_FEATURE_LAHF_LM, '!< LAHF/SAHF supported in 64-bit mode */
             CPU_FEATURE_CMP_LEGACY, '!< core multi-processing legacy mode */
             CPU_FEATURE_SVM, '!< AMD Secure virtual machine */
             CPU_FEATURE_ABM, '!< LZCNT instruction support */
             CPU_FEATURE_MISALIGNSSE, '!< Misaligned SSE supported */
             CPU_FEATURE_SSE4A, '!< SSE 4a from AMD */
             CPU_FEATURE_3DNOWPREFETCH, '!< PREFETCH/PREFETCHW support */
             CPU_FEATURE_OSVW, '!< OS Visible Workaround (AMD) */
             CPU_FEATURE_IBS, '!< Instruction-based sampling */
             CPU_FEATURE_SSE5, '!< SSE 5 instructions supported (deprecated, will never be 1) */
             CPU_FEATURE_SKINIT, '!< SKINIT / STGI supported */
             CPU_FEATURE_WDT, '!< Watchdog timer support */
             CPU_FEATURE_TS, '!< Temperature sensor */
             CPU_FEATURE_FID, '!< Frequency ID control */
             CPU_FEATURE_VID, '!< Voltage ID control */
             CPU_FEATURE_TTP, '!< THERMTRIP */
             CPU_FEATURE_TM_AMD, '!< AMD-specified hardware thermal control */
             CPU_FEATURE_STC, '!< Software thermal control */
             CPU_FEATURE_100MHZSTEPS, '!< 100 MHz multiplier control */
             CPU_FEATURE_HWPSTATE, '!< Hardware P-state control */
             CPU_FEATURE_CONSTANT_TSC, '!< TSC ticks at constant rate */
             CPU_FEATURE_XOP, '!< The XOP instruction set (same as the old CPU_FEATURE_SSE5) */
             CPU_FEATURE_FMA3, '!< The FMA3 instruction set */
             CPU_FEATURE_FMA4, '!< The FMA4 instruction set */
             CPU_FEATURE_TBM, '!< Trailing bit manipulation instruction support */
             CPU_FEATURE_F16C, '!< 16-bit FP convert instruction support */
             CPU_FEATURE_RDRAND, '!< RdRand instruction */
             CPU_FEATURE_X2APIC, '!< x2APIC, APIC_BASE.EXTD, MSRs 0000_0800h...0000_0BFFh 64-bit ICR (+030h but not +031h), no DFR (+00Eh), SELF_IPI (+040h) also see standard level 0000_000Bh */
             CPU_FEATURE_CPB, '!< Core performance boost */
             CPU_FEATURE_APERFMPERF, '!< MPERF/APERF MSRs support */
             CPU_FEATURE_PFI, '!< Processor Feedback Interface support */
             CPU_FEATURE_PA, '!< Processor accumulator */
             CPU_FEATURE_AVX2, '!< AVX2 instructions */
             CPU_FEATURE_BMI1, '!< BMI1 instructions */
             CPU_FEATURE_BMI2, '!< BMI2 instructions */
             CPU_FEATURE_HLE, '!< Hardware Lock Elision prefixes */
             CPU_FEATURE_RTM, '!< Restricted Transactional Memory instructions */
             CPU_FEATURE_AVX512F, '!< AVX-512 Foundation */
             CPU_FEATURE_AVX512DQ, '!< AVX-512 Double/Quad granular insns */
             CPU_FEATURE_AVX512PF, '!< AVX-512 Prefetch */
             CPU_FEATURE_AVX512ER, '!< AVX-512 Exponential/Reciprocal */
             CPU_FEATURE_AVX512CD, '!< AVX-512 Conflict detection */
             CPU_FEATURE_SHA_NI, '!< SHA-1/SHA-256 instructions */
             CPU_FEATURE_AVX512BW, '!< AVX-512 Byte/Word granular insns */
             CPU_FEATURE_AVX512VL, '!< AVX-512 128/256 vector length extensions */
             CPU_FEATURE_SGX, '!< SGX extensions. Non-autoritative, check cpu_id_t::sgx::present to verify presence */
             CPU_FEATURE_RDSEED, '!< RDSEED instruction */
             CPU_FEATURE_ADX,
             NUM_CPU_FEATURES

Private Enum VENDOR_INTEL = 0,  '/*!< Intel CPU */
           VENDOR_AMD,        '/*!< AMD CPU */
           VENDOR_CYRIX,      '/*!< Cyrix CPU */
           VENDOR_NEXGEN,     '/*!< NexGen CPU */
           VENDOR_TRANSMETA,  '/*!< Transmeta CPU */
           VENDOR_UMC,        '/*!< x86 CPU by UMC */
           VENDOR_CENTAUR,    '/*!< x86 CPU by IDT */
           VENDOR_RISE,       '/*!< x86 CPU by Rise Technology */
           VENDOR_SIS,        '/*!< x86 CPU by SiS */
           VENDOR_NSC,        '/*!< x86 CPU by National Semiconductor */
           NUM_CPU_VENDORS,   '/*!< Valid CPU vendor ids: 0..NUM_CPU_VENDORS - 1 */
             VENDOR_UNKNOWN = -1

Public Struct cpu_list_t
num_entries As Integer
names As String
End Struct

Public Struct cpu_raw_data_t
  basic_cpuid[32, 4] As Integer
  ext_cpuid[32, 4] As Integer
  intel_fn4[8, 4] As Integer
  intel_fn11[4, 4] As Integer
  intel_fn12h[4, 4] As Integer
  intel_fn14h[4, 4] As Integer
End Struct

Public Struct cpu_sgx_t
  present As Integer
  max_enclave_32bit As Byte
  max_enclave_64bit As Byte
  flags[14] As Byte
  num_epc_sections As Integer
  misc_select As Integer
  secs_attributes As Long
  secs_xfrm As Long
End Struct

Public Struct cpu_id_t
  vendor_str[16] As Byte            '     0 -  15
  brand_str[64] As Byte             '    16 -  79
  vendor As Integer                 '    80 -  83
  flags[124] As Byte                '    84 -   ?
  family As Integer
  model As Integer
  stepping As Integer
  ext_family As Integer
  ext_model As Integer
  num_cores As Integer
  num_logical_cpus As Integer
  total_logical_cpus As Integer
  l1_data_cache As Integer
  l1_instruction_cache As Integer
  l2_cache As Integer
  l3_cache As Integer
  l4_cache As Integer
  l1_assoc As Integer
  l2_assoc As Integer
  l3_assoc As Integer
  l4_assoc As Integer
  l1_cacheline As Integer
  l2_cacheline As Integer
  l3_cacheline As Integer
  l4_cacheline As Integer
  cpu_codename[64] As Byte
  sse_size As Integer
  detection_hints[16] As Byte
  sgx As Struct Cpu_sgx_t
End Struct

Public Struct cpu_mark_t
  tsc As Long
  sys_clock As Long
End Struct

Public Struct cpu_epc_t
  start_addr As Long
length As Long
End Struct

' int cpuid_present(void)
' Checks if the CPUID instruction is supported.
Private Extern cpuid_present() As Integer

' int cpuid_get_raw_data(struct cpu_raw_data_t* data)
' Obtains the raw CPUID data from the current CPU.
Private Extern cpuid_get_raw_data(data As Cpu_raw_data_t) As Integer

'/ * *
' * @brief Returns the short textual representation Of a CPU flag
' * @param feature - the feature, whose textual representation Is Wanted.
' * @returns a constant string Like "fpu", "tsc", "sse2", etc.
' * @note the names Of the returned flags are compatible With those From
' * / proc / cpuinfo In Linux, With the exception Of `tm_amd'
' * /
'Const char * cpu_feature_str(cpu_feature_t feature);
Private Extern cpu_feature_str(cpu_feature_t As Integer) As String

' const char* cpuid_error(void)
' Returns textual description of the last error.
Private Extern cpuid_error() As String

' int cpu_identify(struct cpu_raw_data_t* raw, struct cpu_id_t* data)
' Identifies the CPU.
Private Extern cpu_identify(raw As Cpu_raw_data_t, data As Cpu_id_t) As Integer

' void cpu_tsc_mark(struct cpu_mark_t* mark)
' Store TSC and timing info.
Private Extern cpu_tsc_mark(mark As Cpu_mark_t)

' void cpu_tsc_unmark(struct cpu_mark_t* mark)
' Calculate TSC and timing difference.
Private Extern cpu_tsc_unmark(mark As Cpu_mark_t)

' int cpu_clock(void)
' Get the CPU clock frequency (all-in-one method).
Private Extern cpu_clock() As Integer

'cpu_vendor_t cpuid_get_vendor(void);
Private Extern cpuid_get_vendor() As Integer

'void cpuid_get_cpu_list(cpu_vendor_t vendor, struct cpu_list_t* list);
Private Extern cpuid_get_cpu_list(cpu_vendor_t As String, list As Cpu_list_t) As String
' int cpu_clock_by_os(void)
' Returns the CPU clock, as reported by the OS.
Private Extern cpu_clock_by_os() As Integer

' int cpu_clock_by_ic(int millis, int runs)
' Measure the CPU clock frequency using instruction-counting.
Private Extern cpu_clock_by_ic(millis As Integer, runs As Integer) As Integer

' int cpu_clock_measure(int millis, int quad_check)
' Measure the CPU clock frequency.
Private Extern cpu_clock_measure(millis As Integer, quad_check As Integer) As Integer


Public Sub Main()

  Dim raw As New Cpu_raw_data_t
  Dim data As New Cpu_id_t
  Dim mark As New Cpu_mark_t
  Dim names As New Cpu_list_t
  Dim au As String
  Dim i As Integer
    If Not cpuid_present() Then Error.Raise("Sorry, your CPU doesn't support CPUID !")
   
    If cpuid_get_raw_data(raw) < 0 Then
      Error.Raise("Sorry, cannot get the CPUID raw data.\nError: " & cpuid_error())
    Endif
 
    If cpu_identify(raw, data) < 0 Then
      Error.Raise("Sorry, CPU identification failed.\nError: " & cpuid_error())
    Endif

    cpu_tsc_mark(mark)
    cpu_tsc_unmark(mark)
    Print cpuid_get_vendor()
    Print cpu_feature_str(CPU_FEATURE_VME); IIf(data.flags[CPU_FEATURE_VME], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_DE); IIf(data.flags[CPU_FEATURE_DE], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_SSE4_1); IIf(data.flags[CPU_FEATURE_SSE4_1], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_SSE4_2); IIf(data.flags[CPU_FEATURE_SSE4_2], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_3DNOWPREFETCH); IIf(data.flags[CPU_FEATURE_3DNOWPREFETCH], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_SSE5); IIf(data.flags[CPU_FEATURE_SSE5], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_SSE); IIf(data.flags[CPU_FEATURE_SSE], " Present", " Absent")
    Print cpu_feature_str(CPU_FEATURE_SSE2); IIf(data.flags[CPU_FEATURE_SSE2], " Present", " Absent")
    Print "   \"VENDOR_STR\":         "; String@(data.vendor_str.data)
    Print "   \"CPU_CODENAME\":       "; String@(data.cpu_codename.data)
    Print "   \"BRAND_STR\":          "; String@(data.brand_str.data)
    Print "   \"VENDOR\":             "; data.vendor
    Print "   \"NUM_CORES\":          "; data.num_cores
    Print "   \"NUM_LOGICAL_CPUS\":   "; data.num_logical_cpus
    Print "   \"TOTAL_LOGICAL_CPUS\": "; data.total_logical_cpus
    Print "   \"FAMILY\":             "; data.family
    Print "   \"MODEL\":              "; data.model
    Print "   \"STEPPING\":           "; data.stepping
    Print "   \"EXT_FAMILY\":         "; data.ext_family
    Print "   \"EXT_MODEL\":          "; data.ext_model
    au = IIf(data.detection_hints[CPU_HINT_SSE_SIZE_AUTH], "(authoritative)", "(non-authoritative)")
    Print "   \"SSE_SIZE\":           "; data.sse_size; " bit "; au
    Print "   \"CPU_CLOCK\":          "; cpu_clock(); " Mhz"
    Print "   \"CPU_CLOCK_BY_OS\":    "; cpu_clock_by_os(); " Mhz"
    Print "   \"CPU_CLOCK_BY_IC\":    "; cpu_clock_by_ic(25, 16); " Mhz"
    Print "   \"CPU_CLOCK_MEASURE\":  "; cpu_clock_measure(400, 1); " Mhz"
    Print "   \"L1_DATA_CACHE\":      "; data.l1_data_cache; " KB"
    Print "   \"L1_INSTRUCTION_CACHE\": "; data.l1_instruction_cache; " KB"
    Print "   \"L1_CACHELINE\":       "; data.l1_cacheline; " bytes"
    Print "   \"L1_ASSOC\":           "; data.l1_assoc; "-way"
    Print "   \"L2_CACHE\":           "; data.l2_cache; " KB"
    Print "   \"L2_ASSOC\":           "; data.l2_assoc; "-way"
    Print "   \"L2_CACHELINE\":       "; data.l2_cacheline; " bytes"
    Print "   \"L3_CACHE\":           "; data.l3_cache; " KB"
    Print "   \"L3_ASSOC\":           "; data.l3_assoc; "-way"
    Print "   \"L3_CACHELINE\":       "; data.l3_cacheline; " bytes"
    Print "   \"L4_CACHE\":           "; data.l4_cache; " KB"
    Print "   \"L4_ASSOC\":           "; data.l4_assoc; "-way"
    Print "   \"L4_CACHELINE\":       "; data.l4_cacheline; " bytes"
    Print "   \"MARK_TSC\":           "; mark.tsc
    Print "   \"MARK_SYS_CLOCK\":     "; mark.sys_clock

End

Return me:

vme Present #So my CPU has this instruction :ok:
de Present #So my CPU has this instruction :ok:
sse4_1 Absent #So my CPU does not have this instruction :ok:
sse4_2 Absent #So my CPU does not have this instruction :ok:
3dnowprefetch Absent #So my CPU has this instruction :hatecomputer:
sse5 Present #So my CPU does not have this instruction :hatecomputer:
sse Absent #So my CPU has this instruction :hatecomputer:
sse2 Absent #So my CPU has this instruction :hatecomputer:

23
Programmazione / Re:Libcpuid14 Extern
« il: 04 Novembre 2016, 19:17:28 »
Now the problem is with the flags of the CPU.
How to detect whether the instruction is served by processor.

Codice: [Seleziona]
	/**
* contain CPU flags. Used to test for features. See
* the \ref cpu_feature_t "CPU_FEATURE_*" macros below.
* @see Features
*/
uint8_t flags[CPU_FLAGS_MAX];

Codice: [Seleziona]
typedef enum {
CPU_FEATURE_FPU = 0, /*!< Floating point unit */
CPU_FEATURE_VME, /*!< Virtual mode extension */
CPU_FEATURE_DE, /*!< Debugging extension */
CPU_FEATURE_PSE, /*!< Page size extension */
CPU_FEATURE_TSC, /*!< Time-stamp counter */
CPU_FEATURE_MSR, /*!< Model-specific regsisters, RDMSR/WRMSR supported */
CPU_FEATURE_PAE, /*!< Physical address extension */
..............................................
NUM_CPU_FEATURES,
} cpu_feature_t;
Codice: [Seleziona]
/**
 * @brief Returns the short textual representation of a CPU flag
 * @param feature - the feature, whose textual representation is wanted.
 * @returns a constant string like "fpu", "tsc", "sse2", etc.
 * @note the names of the returned flags are compatible with those from
 *       /proc/cpuinfo in Linux, with the exception of `tm_amd'
 */
const char* cpu_feature_str(cpu_feature_t feature);
In C look like this:

Codice: [Seleziona]
	printf("					\"VALUE\": %s \n", data.flags[CPU_FEATURE_MMXEXT] ? "1 ," : "0 ,");

Or code from cpuid_tool:
Codice: [Seleziona]
for (i = 0; i < NUM_CPU_FEATURES; i++)
if (data.flags[i])
fprintf(fout, " %s", cpu_feature_str(i));
fprintf(fout, "\n");
Also, do not close this thread.

24
Programmazione / Re:Libcpuid14 Extern
« il: 04 Novembre 2016, 09:00:31 »
Thank you very much. Can I add you to the information about the program? About tab?

One more question. I check the flags by:
Codice: [Seleziona]
 Print data.flags[0]
    Print data.flags[1]
    Print data.flags[89]

But how to know what the flag corresponds to the flags
  • or flags [8]


And yet how it should look SSE_SIZE

in C:
Codice: [Seleziona]
printf("	\"SSE_SIZE\": \"%d bits (%s)\"\n", data.sse_size, data.detection_hints[CPU_HINT_SSE_SIZE_AUTH] ? "authoritative" : "non-authoritative");

Print data.sse_size return me 0, in C return me 64

25
Programmazione / Re:Libcpuid14 Extern
« il: 03 Novembre 2016, 20:19:32 »
Can somehow solve this problem?

26
Programmazione / Re:Libcpuid14 Extern
« il: 03 Novembre 2016, 20:08:43 »
Returns Now here's the problem with segfault

Codice: [Seleziona]
gbx3: malloc.c:2392: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (ol
d_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.

27
Programmazione / Re:Libcpuid14 Extern
« il: 03 Novembre 2016, 20:00:25 »
Errors by F8

1: Dim mark As New Cpu_mark_t
2: Print Object.SizeOf(raw)

Segfault at Print Object.SizeOf(raw)

And could you install this library?

What could be added to libcpuid to detect the CPU without its combination?
I may write to the author that he added a function that make things easier?

28
Programmazione / Re:Libcpuid14 Extern
« il: 03 Novembre 2016, 19:48:08 »
Error occurs in the same place. You are able to execute this code?

29
Programmazione / Re:Libcpuid14 Extern
« il: 03 Novembre 2016, 18:45:14 »
Segfault in:

Codice: [Seleziona]
    If cpu_identify(raw, data) < 0 Then
      Error.Raise("Sorry, CPU identification failed.\nError: " & cpuid_error())
    Endif
   
    cpu_tsc_mark(mark)
    cpu_tsc_unmark(mark)

30
Programmazione / Re:Libcpuid14 Extern
« il: 03 Novembre 2016, 18:25:27 »
Segfault, it's only what it receives.

Pagine: 1 [2] 3