Z
zj1978
Unregistered / Unconfirmed
GUEST, unregistred user!
大家都用过function Length(S): Integer;这个函数吧,但是在delphi内部是怎么实现的呢?<br> 我今天就没找到他的实现(帮助里说在system.pas),<br> 所以我跟了一下<br> 用count:=length('aa');<br> cpu显示 004D95A8 BB0200000 mov ebx $00000002<br> 直接将2就赋过来了,莫非编译器内部直接把这个函数给处理了???<br><br> 假如写成 <br> aa:=inttostr(random(10000));<br> j:=length(aa);<br> cpu为 <br> mov eax,[ebp-$04]<br> call @LStrLen<br> Mov ebx,eax<br> 可以看到调用了位于system.pas 6042行这个函数<br> function _LStrLen{str: AnsiString}: Longint; <br> 那么是怎么调用了,到底是怎么绕到这个上来的?是不是编译器内部在操作?<br> 还有一个问题就是system.pas中有很多以 ' _ '打头的汇编函数,那么他们的特殊性在那里?<br><br><br>