2012-04-22 4 views
4

IDAでいくつかのDelphiアセンブリを使用しています。Delphiアセンブリコール

私は理解していない多くのシステムコールに気づいていて、それらに関するドキュメントを見つけることができませんでした。 例:不明な関数LStrClr(void *)への呼び出しが多いことに気付きました。

このサイトは最高のものでしたhttp://www.delphibasics.co.uk/ByLetter.asp?Letter=A しかし、LStrClrを含む多くの関数呼び出しがありません。

返信いただきありがとうございます。 Michael Engstler

答えて

7

LStrClrは、Long String Clearを意味します。長い文字列変数をクリアするために使用されます。あなたが書く言い換えれば、:

s := ''; 

コンパイラはランタイムサポート機能_LStrClrへの呼び出しを生成します。 Unicode Delphiの場合は、になります。ここで、UはAnsiStringではなくUnicodeStringを意味します。

すべての私的実装の詳細なので、公式のドキュメントはありません。しかし、Delphi RTLのソースコードがあります。それを参照すると、そのような呼び出しは分かりやすくなります。

+0

@MichaelEngstler - 使用しているDelphiのバージョンについては言及していません。これらの低レベルコール(実装の詳細)は、異なるバージョン間では多分ばらつきがあります(たとえば、8ビット/ Win32 Borland Delphi 7とネイティブUnicode Embarcadero XE2の間など)。 – paulsm4

+0

'_LStrXXX()'関数は常に 'AnsiString'(' 'UTF8String''や' 'RawByteString''のようなD2009 +の' AnsiString'ベースの型)で使われます。 AnsiStringが初めて導入されて以来、これは変わっていません。 'UnicodeString'は' _UStrXXX() '関数を使い、' WideString'は '_WStrXXX'関数を使います。 32ビットと64ビットの違いはありません。 –