アセンブラ (XE3) で TList.IndexOf メソッドを書き直そうとしています。これが私のコードです
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: ここでは意図的に見つからない状況を処理しません