Я пытаюсь переписать метод TList.IndexOf на ассемблере (XE3). Вот мой код
function TFastList.IndexOfAsm(Item: Pointer): Integer;
{var
P: PPointer;
begin
P := Pointer(FList);
for Result := 0 to FCount - 1 do
begin
if P^ = Item then
Exit;
Inc(P);
end;
Result := -1;}
var
FCnt, rslt: Integer;
FData: Pointer;
begin
FCnt := Count;
FData := List;
asm
push edi
mov ecx, FCnt
mov edi, FData
mov eax, Item
repne scasd
mov eax, FCnt
sub eax, ecx
dec eax
mov rslt, eax
pop edi
end;
Result := rslt;
end;
Естественно, я хотел бы напрямую использовать такие свойства, как Count или List. Я понимаю, почему компилятор отказывается предоставить доступ к закрытым полям FCount и FList, но как мне получить доступ к соответствующим свойствам? Count, Self.Count и [eax] .Count все дают встроенную ошибку ассемблера.
JIC: Я не намерен разбираться с ситуацией, которая здесь не найдена.