能力值:
(RANK:570 )
2 楼
在这里是可以的
能力值:
( LV2,RANK:10 )
3 楼
谢谢版主回复
能力值:
( LV2,RANK:10 )
4 楼
没有看明白。。。。
能力值:
( LV9,RANK:170 )
5 楼
在第四章4.2.2节,给出的小程序反汇编后的其中一段代码如下:
你说的那个[ebp-4]的情况是因为编译造成的,定义了变量
在写代码中可能是这样写的:
Function ABC(a,b:integer):integer;
var
i:integer;
begin
i:=b;
a:=a+i;
abc:=a;
end;
初始
00001000 aaaaaaaa <- ESP
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX
0040101F /$ 55 push ebp
00000FFC EBP <- ESP
00001000 aaaaaaaa
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX
00401020 |. 8BEC mov ebp, esp ;EBP=00000FFC
00401022 |. 83EC 04 sub esp, 4
00000FF8 ???????? <- ESP
00000FFC EBP
00001000 aaaaaaaa
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX
00401025 |. 8B45 0C mov eax, dword ptr [ebp+C] ;EAX=[00001008]=XXXXXXXX
00401028 |. 8B5D 08 mov ebx, dword ptr [ebp+8] ;EBX=[00001004]=XXXXXXXX
0040102B |. 895D FC mov dword ptr [ebp-4], ebx ;[EBP-4]=[00000FFC-4]=[00000FF8]=????????<-EBX=XXXXXXXX
00000FF8 XXXXXXXX <- ESP
00000FFC EBP
00001000 aaaaaaaa
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX 0040102E |. 0345 FC add eax, dword ptr [ebp-4] ;EAX=EAX+[00000FF8]=EAX+XXXXXXXX
00000FF8 XXXXXXXX <- ESP
00000FFC EBP
00001000 aaaaaaaa
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX
00401031 |. 83C4 04 add esp, 4
00000FFC EBP <- ESP
00001000 aaaaaaaa
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX 00401034 |. 5D pop ebp
00001000 aaaaaaaa <- ESP
00001004 XXXXXXXX
00001008 XXXXXXXX
0000100C XXXXXXXX
00001010 XXXXXXXX 00401035 \. C2 0800 retn 8 ; EIP=aaaaaaaa ESP=0000100C
能力值:
( LV2,RANK:10 )
6 楼
[QUOTE=nig;517578]在第四章4.2.2节,给出的小程序反汇编后的其中一段代码如下:
你说的那个[ebp-4]的情况是因为编译造成的,定义了变量
在写代码中可能是这样写的:
Function ABC(a,b:integer):integer;
var
i:integer;
begin
i:=b;
...[/QUOTE]
非常感谢nig兄的详细回答,很形象明了