读书人

delphi not运算的基础有关问题

发布时间: 2012-06-05 13:54:06 作者: rapoo

delphi not运算的基础问题
代码如下
procedure test;
var
i:Byte;
begin
i:=0; 我在此处下断点
i:=not i;
end;

断点执行后 反汇编
此时ebp 为 0018F534
Unit1.pas.69: I:=0;
00520654 C645FF00 mov byte ptr [ebp-$01],$00 ------ i的地址是[ebp-$01]

堆栈为
0018F534 44 00 4A 97
0018F530 C8 77 08 69

单步执行后 反汇编
此时ebp 为 0018F534
Unit1.pas.70: i:=not i;
00520658 F655FF not byte ptr [ebp-$01]

堆栈为
0018F534 44 00 4A 97
0018F530 C8 77 08 69


单步执行后 反汇编
此时ebp 为 0018F534
Unit1.pas.72: end;
0052065B 59 pop ecx

堆栈为
0018F534 44 FF 4A 97 问题在这 44后面的位置 那个位置应该是[ebp+01],而实际i的地址是[ebp-$01]
0018F530 C8 77 08 69

可能我表达的有问题
其实就是想知道内存区域的变化
我以前是学win32汇编的 来搞搞delphi 呵呵




[解决办法]

引用
此时ebp 为 0018F534

读书人网 >.NET

热点推荐