İşlemcimin 32 bit mi yoksa 64 bit mi (seçim dilinizde) olduğunu nasıl anlarım? Bunu hem Intel hem de AMD işlemciler için bilmek istiyorum.İşlemcimin 32 veya 64 bit olup olmadığını nasıl anlayabilirim?
cevap
Pencereler, C/C++: Ben 64 bit işlemci üzerinde düşünüyordum
#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;
}
Bunun hangi dil olduğunu belirtebilir misiniz (evet, * I * biliyorum ama diğerleri değil) ve diğer gereksinimler (ör. Başlık dosyaları)? – paxdiablo
Veya, bu konuda, hangi işletim sistemi? Bu benim Mac Mini, Linux kutularım ve Windows XP ve Vista sistemlerimde çalışacak mı? –
Bah - düzenleme yapamıyorum ... ama bu nedenle 'default:' anahtarını eklemek için * gerekir * ... –
, göstericiler 64 bit vardır. Böylece, işlemci özelliklerini kontrol etmek yerine, programatik olarak 'test etmek' için işaretçiler kullanmak mümkün olabilir. İki bitişik işaretçi ile bir yapı oluşturmak ve daha sonra 'adımlarını' kontrol etmek kadar basit olabilir.
Hayır, 64 bit özellikli işlemci üzerinde çalışan 32 bit koduyla yardımcı olmaz. – mghie
C#,
sizeof(IntPtr) == 4 ? "32-bit" : "64-bit"
Bu biraz ham ama CLR daha muhtemel Bilmeniz gereken ne ise 32 bit ya da 64 bit olarak çalışır durumda olup olmadığını temelde söyler agnostik işletim sistemi. CLR, örneğin 64 bit işlemci üzerinde 32 bit olarak çalışabilir.
fazla bilgi için buraya bakın: How to detect Windows 64-bit platform with .NET?
burada hileli parça bir 64 bit işlemci ama 32 bit işletim sistemi olabilir olduğunu. Bu durumu önemsiyorsanız, CPU'yu sorgulamak için bir asm dizisi gerektirecektir. Değilse, OS'ye kolayca sorabilirsiniz.
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
Windows komut dosyası, JScript'te bu zaman ve PROCESSOR_ARCHITECTURE ortam değişkeni kullanmak için başka bir olası çözüm:
NET'tevar 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
}
Eğer x64 dan x86 ayırt edebilir IntPtr yapısının Boyut özelliğine bakarak. IntPtr.Size özelliği bayt başına 8 bit olarak döndürülür, bu nedenle 32 bitlik bir CPU'da 4'e ve 64 bitlik bir CPU'da 8'e eşittir. 4 bayt veya 8 baytlı işlemciler yerine 32 bit ve 64 bit işlemcilerden bahsettiğimizden, karşılaştırmayı bitlerde yapmaktan çok daha iyi bir şey olduğunu düşünüyorum.
C#
if(IntPtr.Size * 8 == 64)
{
//x64 code
}
PowerShell
if([IntPtr]::Size * 8 -eq 64)
{
#x64 code
}
C# Kod: Python
int size = Marshal.SizeOf(typeof(IntPtr));
if (size == 8)
{
Text = "64 bit";
}
else if (size == 4)
{
Text = "32 bit";
}
:
In [10]: import platform
In [11]: platform.architecture()
Out[11]: ('32bit', 'ELF')
Her zamanki gibi, oldukça temiz. Ama eminim ki bu fonksiyonlar, platformun üzerinde çalıştığı platform değil, inşa edildiği platformu döndürüyor. Bazı ineklerin 64 bitlik bir bilgisayarda 32 bitlik bir versiyon çalıştırdığı konusunda hala küçük bir şans var.
Sen gibi bazı daha çok bilgi sahip olabilir:
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',
'')
VS.
Bu
/proc/cpuinfo
örn okuyarak linux siz "BITNESS" belirleyebilir yılında
Ben bu inekim. 64bit python var, ancak bu mimari için önceden oluşturulmuş modüller elde etmek zordur ve neredeyse yerel olarak derlenmiş çalışmayı elde etmek zordur. – SingleNegationElimination
:-) canlı veriler gibi daha fazla görünüyor.
cat /proc/cpuinfo | grep flags
bu yanı olmayan x86 işlemciler için çalışır eğer öyle
lm
flag bir x86 64 bit CPU (32 bit Linux yüklü olsa bile)
emin değil içeriyorsa PPC veya ARM gibi.
- 1. System.Diagnostics.Process dosyasının 32 veya 64 bit olup olmadığı nasıl belirlenir?
- 2. Bir uygulamanın 32 veya 64 bit sürümünü,
- 3. Programımın 32 veya 64 bit işlemci için derlenmiş olup olmadığını nasıl kontrol edebilirim?
- 4. C - 8 bit 32 bit olup olmadığını nasıl kontrol edelim?
- 5. Her zaman 32 bit ve 64 bit makinede 64 bit
- 6. Tek 32/64 bit sürücüleri
- 7. 64-bit Windows'da 32 ve 64 bit birlikte çalışabilirlik
- 8. Montajda 32/64 bit mimariyi belirle
- 9. Nasıl 32 bit C# uygulaması bir 64 bit DLL kullanabiliyor
- 10. 64 bit CentOS sisteminde 32 bit özel Perl için 32 bit XS modülleri nasıl oluştururum?
- 11. Bir 32 bit programında 64 bit sürücü kullanılması. Windows
- 12. Android app Saf java: 32 veya 64 bit?
- 13. JavaScript'te 32 bitlik veya 64 bit uzunluğunun uygulanması?
- 14. İmzasız 32 bit int imzasız 32 bit int nasıl dönüştürülür?
- 15. Intellij idea 32 bit vs 64 bit hız ve performans
- 16. JRE mimarisini belirleme 32 bit vs 64 bit
- 17. 64 bit Azure Web uygulamasında 32 bit uygulamaları etkinleştirin
- 18. 64-bit bir makinede 32-bit C# uygulaması çalıştırılıyor
- 19. 32 bit mimarilerde 64 bit işlenen üzerinde işlemler?
- 20. 32 bit modunda IE çalıştırılamıyor veya işlem
- 21. Garip ASP.NET AJAX Hata/32 bit 64-bit
- 22. 64 bit sistemde 32 bit dll kullanma 0x8007000B Hatası
- 23. 32 bit DLL'lere karşı 64 bit EXE bağlantısı olabilir mi?
- 24. 64 bit işletim sisteminde 32 bit STS kullanmak mümkün mü?
- 25. 64 bit MSBuild 32 bit uzantıları neden yükleniyor?
- 26. 64 bit makinede yakalanan 32 bit işlemin hata ayıklama dökümü
- 27. 32-bit işlemden 64-bit dll'de LoadLibrary çağrısı
- 28. 64 bit platformda 32 bit programları derlemek için gcc gç
- 29. Bağlantı Noktası 32-Bit 64-Bit Windows sürücüsü Windows
- 30. 64 bit uygulamadan 32 bit paylaşılan kitaplığı yükleyin?
En azından bu bilgiyi – JaredPar
numaralı belgede bulmaya çalıştığınız dili belirtmeniz gerekir. Bu, bir programlama sorusu gibi görünmüyor. –
Bir programlama sorusu değil. –