Zitat:
Besser wäre, add al,d2 nebst cmp al,3a.
Der Delphi Compiler arbeitet bei Sets nur mit ganzen Bytegrenzen, also mit Vielfachen von 8.
z.B. die Konstante [6..10] benötigt zwei bytes, also den Speicherbereich von [0..15], obwohl die Bits um weniger als 8 auseinander liegen und in einem Byte Platz hätten. Deshalb add al,d8 statt add al,d2.
Bei der Abfrage cmp al,47 bin ich selbst reingefallen und habe erst geglaubt, dass 47 dem grössten Buchstaben der Setkonstante entspricht, statt dessen entspricht 47 dem grössten Buchstaben, der in den Bytes Platz hätte, die für die Setkonstante benötigt werden.
Aber ich würde sagen, die "Kosten" für das "teure" bt [475bf8],eax fallen nicht wirklich ins Gewicht.