ich habe zum Beispiel im Speicher eine 4-Byte-Long-Variable stehen. Diese möchte ich möglichst schnell mehrere Tausend male hintereinander in einen anderen Speicherbereich kopieren. Mit CopyMemory() ist das ja kein Problem:
zeiger = 0
For count = 0 To 10000
CopyMemory(quelle, ziel + zeiger, 4)
zeiger + 4
Next count
Mein Frage: Gibt es dafür eine andere Möglichkeit? Evtl. einen Assemblerbefehl oder -routine, mit der man den Speicher mit einer immer wiederkehrenden Bitfolge füllen kann?
STOSD ist dein Freund. Der Inhalt von EAX wird an die Speicherstelle die durch ES:EDI angegeben ist kopiert. EDI wird dabei automatisch erhöht oder erniedrigt, je nach Zustand des Direction Flag. In Verbindung mit dem Rep Befehl ist das genau das was du brauchst.
Etwa so:
mov eax, der_zu_kopierende_wert
mov ecx, anzahl_der_wiederholungen
cld ;damit es aufsteigendgeht
rep stosd ;wiederhole bis ecx = 0
Da ich auf Arbeit bin habe ich das jetzt nicht getestet!