title: Delphi inline assembler and class properties
body: <p>I am trying to rewrite the TList.IndexOf method in assembler (XE3). Here is my code</p>
  
  <pre><code>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;
  </code></pre>
  
  <p>Naturally I would like to use the properties like Count or List directly. I understand why the compiler refuses to give access to private fields FCount and FList, but how do I access the corresponding properties? Count, Self.Count, and [eax].Count all give the inline assembler error.</p>
  
  <p>JIC: I don't handle the not found situation here by intent</p>