Delphiでインラインアセンブラ

メモ。そろそろインラインアセンブラを使いたくなってきたので・・・。

program asmhello;

{$APPTYPE CONSOLE}

function Add(X, Y: Integer): Integer; register;
asm
  add EAX, EDX
end;

begin
  WriteLn(Add(3, 7)); // 3 + 7
end.

ボーランド __fastcall 呼出規約では、最初の3つの引数をEAX, EDX, ECXに格納する。

呼出規約 - Wikipedia

呼出規約がregister(fastcall)だと引数はレジスタで渡されるとな。