Delphi 內嵌組合語言允許在 asm 塊中直接使用 @Result 或 Result 符號操作函數返回值,無需額外定義局部變量中轉。
function Fun(x: Integer): Integer;
asm
mov ecx, &x {取 x 的地址}
dec ecx {組合語言 DEC 指令:減 1}
mov @Result, ecx {直接賦值給返回值,@ 符號可省略}
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i := 100;
i := Fun(i);
ShowMessage(IntToStr(i)); {顯示 99}
end;
說明: @Result 代表函數返回值的存儲位置。對於整數類型,返回值通過 EAX 寄存器傳遞,因此 mov @Result, ecx 實際上等同於 mov eax, ecx。@ 符號在無歧義情況下可省略。