Jak mogę się dowiedzieć, czy mój procesor jest 32-bitowy czy 64-bitowy (w wybranym języku)? Chcę to wiedzieć zarówno dla procesorów Intel, jak i AMD.Jak mogę sprawdzić, czy mój procesor ma 32 lub 64 bity?
Odpowiedz
Windows C/C++:
#include <windows.h>
SYSTEM_INFO sysInfo, *lpInfo;
lpInfo = &sysInfo;
::GetSystemInfo(lpInfo);
switch (lpInfo->wProcessorArchitecture) {
case PROCESSOR_ARCHITECTURE_AMD64:
case PROCESSOR_ARCHITECTURE_IA64:
// 64 bit
break;
case PROCESSOR_ARCHITECTURE_INTEL:
// 32 bit
break;
case PROCESSOR_ARCHITECTURE_UNKNOWN:
default:
// something else
break;
}
Czy możesz określić, który to język (tak, * wiem * ale inne nie) i inne wymagania (np. Pliki nagłówkowe)? – paxdiablo
Lub, o to chodzi, jaki system operacyjny? Czy to działa na moich komputerach Mac Mini, skrzynkach linuksowych i systemach Windows XP i Vista? –
Bah - nie można edytować ... ale tak * trzeba * dodać "domyślnie:" do tego przełącznika ... :-) –
Myślałam, na procesor 64-bitowy, wskaźniki są 64-bitowe. Dlatego zamiast sprawdzać funkcje procesora, możliwe jest użycie wskaźników do "testowania" go programowo. Może to być tak proste, jak utworzenie struktury z dwoma sąsiednimi wskaźnikami, a następnie sprawdzenie ich "kroku".
Nie, nie pomoże w przypadku 32-bitowego kodu działającego na 64-bitowym procesorze. – mghie
C#, OS agnostyk
sizeof(IntPtr) == 4 ? "32-bit" : "64-bit"
Jest to nieco surowy, ale w zasadzie wskazuje, czy CLR pracuje jako 32-bitową lub 64-bitową, co jest bardziej prawdopodobne, co trzeba wiedzieć. Środowisko CLR może działać na przykład jako 32-bitowy procesor 64-bitowy.
Aby uzyskać więcej informacji, zobacz tutaj: How to detect Windows 64-bit platform with .NET?
Tricky nieco tutaj jest może masz 64 bitowy procesor, ale 32-bitowy system operacyjny. Jeśli zależy Ci na tym przypadku, będzie wymagać asm-stub do przesłuchania procesora. Jeśli nie, możesz łatwo poprosić system operacyjny.
VBScript, Windows:
Const PROCESSOR_ARCHITECTURE_X86 = 0
Const PROCESSOR_ARCHITECTURE_IA64 = 6
Const PROCESSOR_ARCHITECTURE_X64 = 9
strComputer = "."
Set oWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessors = oWMIService.ExecQuery("SELECT * FROM Win32_Processor")
For Each oProcessor In colProcessors
Select Case oProcessor.Architecture
Case PROCESSOR_ARCHITECTURE_X86
' 32-bit
Case PROCESSOR_ARCHITECTURE_X64, PROCESSOR_ARCHITECTURE_IA64
' 64-bit
Case Else
' other
End Select
Next
Innym możliwym rozwiązaniem dla Windows Script Host, tym razem w JScript i za pomocą zmiennej środowiskowej PROCESSOR_ARCHITECTURE:
var oShell = WScript.CreateObject("WScript.Shell");
var oEnv = oShell.Environment("System");
switch (oEnv("PROCESSOR_ARCHITECTURE").toLowerCase())
{
case "x86":
// 32-bit
case "amd64":
// 64-bit
default:
// other
}
W .NET można odróżnić od x64 x86 patrząc na właściwość Size struktury IntPtr. Właściwość IntPtr.Size jest zwracana w bajtach, 8 bitów na bajt, więc jest równa 4 na 32-bitowym CPU i 8 na 64-bitowym CPU. Ponieważ mówimy o procesorach 32-bitowych i 64-bitowych zamiast 4-bajtowych lub 8-bajtowych procesorach, lubię porównywać je w bitach, co sprawia, że jest bardziej zrozumiałe, co się dzieje.
C#
if(IntPtr.Size * 8 == 64)
{
//x64 code
}
PowerShell
if([IntPtr]::Size * 8 -eq 64)
{
#x64 code
}
C# Kod:
int size = Marshal.SizeOf(typeof(IntPtr));
if (size == 8)
{
Text = "64 bit";
}
else if (size == 4)
{
Text = "32 bit";
}
W Pythonie:
In [10]: import platform
In [11]: platform.architecture()
Out[11]: ('32bit', 'ELF')
Jak zwykle całkiem schludnie. Ale jestem pewien, że te funkcje zwracają platformę, na której zbudowano exec, a nie platformy, na których działa. Nadal istnieje mała szansa, że jakiś geek używa wersji 32-bitowej na 64-bitowym komputerze.
Możesz mieć trochę więcej infos jak:
In [13]: platform.system()
Out[13]: 'Linux'
In [19]: platform.uname()
Out[19]:
('Linux',
'asus-u6',
'2.6.28-11-generic',
'#42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009',
'i686',
'')
ETC.
To wygląda bardziej jak dane żywo :-)
Jestem tym maniakiem. Istnieje 64-bitowy python, ale trudno jest uzyskać wstępnie zbudowane moduły dla tej architektury i prawie równie trudno uzyskać kompilowane lokalnie lokacje robocze. – SingleNegationElimination
w Linuksie można określić "bitness" czytając
/proc/cpuinfo
np.
cat /proc/cpuinfo | grep flags
jeśli zawiera
lm
flagi Jest to x86 64-bitowy procesor (nawet jeśli masz zainstalowany 32-bitowy Linux)
nie wiem, czy to działa dla niezarejestrowanych procesorów x86, jak również takie jak PPC lub ARM.
- 1. Jak określić, czy aplikacja .NET ma 32 czy 64 bity?
- 2. Jak sprawdzić, czy moja instancja Amazon EC2 ma 32 lub 64 bity?
- 3. Jak mogę sprawdzić, czy mój program jest skompilowany dla procesora 32- lub 64-bitowego?
- 4. Określić, czy plik wykonywalny (lub biblioteka) ma 32-lub 64-bity (w systemie Windows)
- 5. Ustal, czy urządzenie iOS ma 32- lub 64-bitowe
- 6. użyciu com 32 bity biblioteka na 64 bitach aplikacyjnych
- 7. Jak mogę sprawdzić, czy mój identyfikator elementu ma fokus?
- 8. Jak sprawdzić, czy moja aplikacja działa jako aplikacja 32-bitowa czy 64-bitowa?
- 9. Czy mam Numpy 32-bitowe lub 64-bitowe?
- 10. Windows 7 64 bity niepoprawna ścieżka podczas ładowania biblioteki 32 bitów dla 32 bitów exe
- 11. Określić, czy plik wykonywalny (lub biblioteka) ma 32 lub 64-bitowe znaki
- 12. 64/32-bitowy podział na procesor z 32/16-bitowym podziałem
- 13. Konwertuj 12 bitów int na 16 lub 32 bity
- 14. Jak sprawdzić, czy mój program ma podłączone do niego dane
- 15. Jak sprawdzić, czy mój Python ma wszystkie wymagane pakiety?
- 16. Czy iPhone OS jest 64-bitowy lub 32-bitowy?
- 17. sprawdź platformę zainstalowanego programu mingw, 32-bitowego lub 64-bitowego
- 18. W jaki sposób mój program może ustalić, czy działa on w 32-bitowym lub 64-bitowym systemie Windows?
- 19. Jak przetestować istniejący plik .NET .dll, aby sprawdzić, czy jest on 32-bitowy czy 64-bitowy?
- 20. Jak używać prawidłowego niezarządzanego pliku DLL zgodnie z architekturą procesora? (32/64 bity)
- 21. Jak mogę wydajnie przetasować bity?
- 22. Jak mogę sprawdzić, czy mój skrypt Perla działa pod Windows?
- 23. Jak mogę sprawdzić, czy mój kontekst jest nadal ważny?
- 24. Sprawdzanie, czy plik jest 32-bitowy lub 64-bitowy - w systemie Windows
- 25. Sprawdź, czy aplikacja jest zbudowana w wersji 32- lub 64-bitowej?
- 26. MySQL: sprawdź, która wersja: 32-bitowa lub 64-bitowa?
- 27. Jak mogę sprawdzić, czy podwójne ma część ułamkową?
- 28. Jak sprawdzić, czy datatable ma wartość Null lub Nic?
- 29. Działa na macierzy matlab 32- lub 64-bitowej?
- 30. Jak przenieść dwa 32-bitowe rejestry do jednego 64-bitowego?
Musisz podać przynajmniej język, w którym próbujesz znaleźć tę informację: – JaredPar
To nie wygląda na pytanie o programowanie. –
Nie jest to pytanie programistyczne. powinien być zamknięty –