Ich möchte eine relativ kurze Sequenz des Speichers (weniger als 1 KB, typischerweise 2-200 Bytes) in einer zeitkritischen Funktion kopieren. Der beste Code für diese Aufgabe auf der CPU-Seite scheint zu sein rep movsd
. Aber irgendwie kann ich meinen Compiler nicht dazu bringen, diesen Code zu erzeugen. Ich hatte gehofft (und ich erinnere mich vage daran, dies gesehen zu haben), dass die Verwendung von memcpy dies mit Hilfe von im Compiler eingebauten Intrinsics bewerkstelligen würde. Ich hatte auch gehofft, dass der Compiler intelligent genug ist, um die folgende Schleife zu erkennen und zu verwenden rep movsd
aber das scheint nicht der Fall zu sein.
char *dst;
const char *src;
// ...
for (int r=size; --r>=0; ) *dst++ = *src++;
Gibt es eine Möglichkeit, den Compiler von Visual Studio dazu zu bringen, die rep movsd
Sequenz anders als mit Inline-Assembly?