Çok hızlı Intel POPCNT komutunu kullanarak 16/32/64bit sözcük içinde 1 bitlik bir sayıyı Delphi XE veya XE2 altında nasıl uygularım? Bu eğitime doğrudan erişim sağlayan bir kütüphane rutini var mı? Birisi kullanımını gösteren bir demo asm bölümü yazabilir mi lütfen? Ve son olarak, 64bit Delphi için seçenekler nelerdir (kullanılabilir değil)? şimdiden teşekkür ederiz. tPOPCNT 64bit
cevap
Rob Kennedy'in suistimal ettiği gibi, burada 32bit ve 64bit Delphi IDE işlevleri vardır.
function GetBitCount(num: integer): integer;
asm
POPCNT eax, num
end;
function GetBitCount(num: Int64): integer;
asm
POPCNT rax, num
end;
DÜZENLEME: Bu 32bit ve 64bit Delphi uyumlu versiyon
{$IF CompilerVersion < 23} //pre-XE2
NativeInt = integer;
{$IFEND}
function GetBitCount(num: NativeInt): integer;
asm
{$IFNDEF CPUX64}
POPCNT eax, num
{$ELSE CPUX64}
POPCNT rax, num
{$ENDIF CPUX64}
end;
Sonuncusu tehlikeli görünüyor, muhtemelen 32-bit bir değer üzerinde çalışacak ve 64-bit bir depolayacak? Ya üst 32-bit sıfır veya int64 olarak ilan? –
@Marco van de Voort Teşekkürler, evet varsayılan olarak 32bit'dir, ancak num'i "NativeInt" veya "Int64" veya "UInt64" olarak bildirebilirsiniz, bunun yerine tham ile çalışır. Int64'e düzeltildi! –
Değişken bir int boyutu kullanırsanız, popcnt satırındaki register'ı ifdef etmeniz gerekir. –
- 1. 64bit g ++
- 2. OpenFire'ı 64bit JVM'de Çalıştır
- 3. 64bit Numaralamalar? C#
- 4. 64bit Konu Başlığı
- 5. 32bit veya 64bit Android SDK?
- 6. Delphi XE2 - Bina 64bit uygulamaları
- 7. 32bit ve 64bit yönetilmeyen DLL
- 8. CPU'nun iyi POPCNT desteğine sahip olup olmadığını nasıl anlarım?
- 9. anlama maksimum JVM yığın boyutu - 64bit
- 10. Windows 8.1'de MongoDB'yi kurun 64bit
- 11. c: 64bit uygulamasında 32bit işaretçi kullan?
- 12. Karışık 32Bit ve 64bit paylaşılan nesne/kütüphane
- 13. Tarihçe 32bit ve 64bit arası Windows PC
- 14. Java ve Eclipse - 32 vs 64bit
- 15. MapViewOfFile 32bit ve 64bit süreçleri arasında paylaşıldı
- 16. betik tarafından 64bit platformunu nasıl algılayacağınız
- 17. Visual Studio 2017 64bit sürümü nasıl yüklenir?
- 18. ubuntu 15.10 64bit build Android source 5.0 sürümü
- 19. Yerel kütüphanenin 32bit ve 64bit sürümlerini java.library.path dosyasına yerleştirebilir miyim?
- 20. 64bit makinede bu yapıyı yapabileceğim en küçük boyut nedir?
- 21. OSX'te hangi Eclipse sürümünü çalıştırmalıyım? 32bit veya 64bit?
- 22. 32bit'den 64bit kurulumuna güncellenmesi en iyi strateji nedir?
- 23. Nasıl bir DLL C# COM Interop BouncyCastle.dll kayıt için Windows 64bit de kullanılır?
- 24. Wix ile SQLite kullanan bir program dağıtın (hem 32bit hem de 64bit üzerinde çalışmalıdır)
- 25. Visual Studio 2010'un 64bit sürümü var mı? MS' resmi sitesinde
- 26. Linux aynı anda 32bit ve 64bit nedir? Yoksa glibc'de bir şey mi var?
- 27. Python'un 64bit veya 32bit olup olmadığını denetlemek için hangi komut kullanılır?
- 28. 64bit "Unsigned" değerini eşdeğer binary değerine biçen bir C# işlevi var mı?
- 29. 64bit C++ 'da size_t ve int türleriyle ilgili sorunlar nasıl önlenir?
- 30. Eclipse ile kullanmak için Windows 7 64bit üzerinde JOGL'yi nasıl yüklersiniz?
asm yanı 64 bitlik Delphi şu lisanlarda olmasıdır. – Giel
Sanırım, "popcnt eax, eax" veya "popcnt rax, rcx" kelimesini bir blok bloğun içinde yazmak kadar basit değil, değil mi? –
Biraz konu dışı: http://www.strchr.com/crc32_popcnt, bir SSSE3 (nibble tablo araması için pshufb') varyantının bazı sistemlerde 'popcnt' yi attığı popcnt uygulamalarının bir karşılaştırma tablosuna sahiptir. Sadece birkaç%, tüm CPU'larda mutlaka aynı değildir ve sadece büyük (100+ Byte) veri için işlem yaparsanız faydalıdır. _Very fast_ akrabadır. –