¼¼Êõ½»Á÷,DH½²½â. ¹þ¹þ,ÎÒ³ÐÈÏÎÒÊDZêÌâµ³.
×î½ü¿´ÌìÊéÒ¹¶ÁÀïÃæÊǶÔCÓïÑԵĴúÂë·´»ã±à,²»´í,¿ÉϧDelphiûÓÐÕâÑùµÄÊé,ÄÇÎÒÃÇ×Ô¼º¶¯ÊÖ°É.
Ê×ÏȽøÈëForÑ»·ÁË. Function TestFor( a, b: Integer ): Integer ;
Var
I: Integer ;
Begin
Result := a + b ;
For I := 0 To 49 Do
Result := Result + I ;
End ;
{$R *.dfm}
Procedure TForm1.btn1Click( Sender: TObject ) ;
Begin
ShowMessage( IntToStr( TestFor( 1, 2 ) ) ) ;
End ;
·´»ã±à´úÂë:
Unit4.pas.28: Result := a + b ;
00523AE0 03D0 add edx,eax //Ö´ÐÐa+b,µ«ÊÇÎ񼆮æ¹ÖΪʲô²»ÓÃadd eax,edx ÕâÑù×îºó¾Í²»ÓÃÖ´ÐÐÄǾämov eax,edxÁË,½ÚÔ¼Ò»¾ä
Unit4.pas.29: For I := 0 To 49 Do
00523AE2 33C0 xor eax,eax //Çå³ýeax,À´³äµ±IÕâ¸öÑ»·±äÁ¿
Unit4.pas.30: Result := Result + I ;
00523AE4 03D0 add edx,eax //ÀۼƺÍ,²¢°ÑÑ»·±äÁ¿+1,ÕâÀï¾ÍÊÇÑ»·ÌåµÄÖ´ÐдúÂë
00523AE6 40 inc eax
Unit4.pas.29: For I := 0 To 49 Do
00523AE7 83F832 cmp eax,$32 //±ß½ç±È½Ï,²»µÈÓÚ¾ÍÌø»ØÈ¥,¼ÌÐøÖ´ÐÐÑ»·Ìå´úÂë.
00523AEA 75F8 jnz $00523ae4 //¿´À´»¹ÊÇÔÙд¸öº¯ÊýÀ´¿´¿´
Unit4.pas.31: End ;
00523AEC 8BC2 mov eax,edx
00523AEE C3 ret
¶Ô±ÈÊéÖÐCµÄ·´»ã±à´úÂë,Delphi·´»ã±à³öÀ´µÄ´úÂëºÜ¾«¼ò,ËäÈ»ÉùÃ÷Á˾ֲ¿±äÁ¿,µ«ÊǺ¯ÊýÖ±½ÓÓüĴæÆ÷´úÌæÁË.ºÜºÃ.
ÊéÖÐCÑ»·ÌåÏÈÖ±½ÓÓÃJmpÌø¹ýÈ¥ÓëÁÙ½ç±äÁ¿±È½Ï,È»ºóÔÙÀ´¿´ÊÇ·ñÖ´ÐÐÑ»·Ìå,¶ø¸Ä±äÑ»·±äÁ¿ËüÓÃÁËadd eax,1,È»ºóÔÙ°Ñeax´«¸øÕ»ÉÏÃæµÄI.
ºóÀ´ÎÒ³¢ÊԸijÉ0 to -1 Delphi±àÒëÆ÷»áʶ±ð³öÀ´,È»ºó²»»áÌí¼ÓÈκÎÑ»·´úÂëµ½º¯ÊýÖÐÈ¥µÄ.
½ÓÏÂÀ´ÊÇdoÑ»·,Ò²¾ÍÊÇRepeat
function TestRepeat(a,b:Integer):Integer ;
var
I:Integer;
begin
Result:=a + b;
I:=0;
repeat
Result:= Result + I;
Inc(I);
until I = 50;
end;
·´»ã±à´úÂë:
Unit4.pas.30: Result:=a + b;
00523AE0 03D0 add edx,eax
Unit4.pas.31: I:=0;
00523AE2 33C0 xor eax,eax
Unit4.pas.33: Result:= Result + I;
00523AE4 03D0 add edx,eax
Unit4.pas.34: Inc(I);
00523AE6 40 inc eax
Unit4.pas.35: until I = 50;
00523AE7 83F832
ÔÚдc++µÄ½Ó¿Úʱ¿ÉÒÔ½«Á½¸öÏ໥ÒýÓõÄÀà·ÅÔÚÁ½¸ö.hÎļþÖУ¬È»ºó½«Õâ¸ö½Ó¿Ú·Òëµ½delphiʱ£¬·ÅÔÚÁ½¸öÎļþÀï¾Í²»¿ÉÄÜÁË¡£Ö»ÄÜ·ÅÔÚͬһ¸öunitÖС£²¢ÇÒÒª½«ÕâÁ½¸öÀà¶¼·ÅÔÚͬһ¸ötypeÏÂÃæ½øÐж¨Ò壬µ±Ç°ÃæÒ»¸öÀàҪʹÓúóÃæÒ»¸öÀàʱ£¬ÐèÒªÔÚÇ°ÃæÒ»¸öÀàµÄÇ°Ãæ·ÅÖÃÒ»¸öǰÖÃÉùÃ÷£¬²¢ÇÒǰÖÃÉùÃ÷Ö»ÄÜÊÇIVariantMap = class;ÕâÖÖ¸ñʽ¶ø² ......