我对 Pascal 很了解,但无法理解这个汇编函数出了什么问题:
{$ASMMODE intel}
function SomeType.doSomething : boolean; assembler;
var i : integer; // for testing
asm
mov EAX, field
mov i, EAX // line 42
and EAX, 4
mov i, EAX
//...
end;
类声明:
type
SomeType = class(TObject)
private
field : integer;
function doSomething : boolean;
// ...
end;
当field
(类的一个字段SomeType
)在调用此方法之前为 4 时,IDE(Lazarus)将向我报告i
在第 42 行分配了 8(请参见上面的行编号)。
我缺少关于内联程序集的内容吗?
为什么字段的值没有EAX
正确存储和/或加载?
更新:我想我可能瞄准 64 位。