Mein Prozessor (Intel i7) unterstützt die POPCNT instruction
und ich möchte sie von meiner C # -Anwendung aus aufrufen. Ist das möglich?
Ich glaube, ich habe irgendwo gelesen, dass es nicht ist, aber das JIT wird es aufrufen, wenn es verfügbar ist, aber welche Funktion müsste ich aufrufen, die durch eine solche Anweisung ersetzt werden kann?
Popcount wird millionenfach in einer Schleife aufgerufen, daher möchte ich diese CPU-Optimierung wenn möglich haben.
Du willst mit Feuer spielen, und hier spielen wir gerne mit Feuer ...
%Vor%(dieses kleine Beispiel der Assembly wird einfach 42 zurückgeben ... Ich denke, es ist die perfekte Zahl für diese Antwort :-))
Am Ende ist der Trick:
A) Sie müssen die Opcodes kennen, die der asm entsprechen, die Sie schreiben möchten
B) Sie verwenden VirtualAlloc, um eine Seite des Speichers ausführbar zu machen
C) Irgendwie kopierst du deine Opcodes dort
(der Code wurde aus Ссылка )
übernommen Ok ... der andere war wie auf der Website geschrieben (minus einem Fehler in der uint
- & gt; IntPtr dwSize
), so sollte es geschrieben werden (oder zumindest ist es ein +1 verglichen zum ursprünglichen ... Ich würde alles in einer IDisposable
-Klasse einkapseln, anstatt try... finally
)
Tags und Links optimization c# cpu hammingweight