Also ich würde alle Index-Operationen durch Zeigeroperationen ersetzen und
kein Assembler verwenden.
Das bringt allerdings nur dann etwas, wenn der Inde kontinuierlich ansteigt oder fällt.
Beispiel ("langsam"):
Delphi-Quellcode:
For c := Low(Char) To High(Char) Do
Skip[c] := n + 1;
Und so mit Zeigeroperationen:
Delphi-Quellcode:
pSkip := @Skip[Low(Char)]; // pSkip:PChar
For c := Low(Char) To High(Char) Do
begin
pSkip^ := n + 1;
Inc(pSkip);
end;
Der entstehende Code ist dann von der Geschwindigkeit so nahe an einer Assembler Implementierung, dass es sich nicht lohnt Assembler zu verwenden.
Ganz wichtig:
Man benötigt unbedingt ein Testbett, mit dem man min. 10 verschiedene Fälle automatisiert testen kann.
Im Prinzip ein
Unit-Test.
Nur so kann man die Funktion Schritt für Schritt verbessern, ohne dass man ständig neue Bugs einbaut.