x ポインターが指す 4 バイトの順序を逆にするために Delphi で書かれたプログラム:
関数 toulong(x: pchar): longWord;
始める
結果 := (longword(x^) shl 24) または
(ロングワード((x + 1)^) shl 16) または
(ロングワード((x + 2)^) shl 8) または
(ロングワード((x + 3)^));
終わり;
Delphi を使用した組み込みアセンブリ方法は次のとおりです。
関数 toulong(x: pchar): ロングワード;
アズム
移動ESI、EAX
モヴ斧、[esi]
ああ、アル
shl eax、16
ムーヴ斧、[esi+2]
ああ、アル
終わり;
注: デフォルトでは、パラメータが 3 以内の場合、Delphi は「登録」メソッドを使用します。
eax、edx、ecx がそれぞれ使用され、スタックは 3 つ以上のパラメーターに使用されます。戻りパラメータ
ストレージは長さに依存します。たとえば、8 ビットでは al を使用して戻り、16 ビットでは ax を使用し、32 ビットでは eax を使用し、64 ビットでは 2 を使用します。
32 ビット レジスタ edx:eax。eax は下位ビットです。
効率: この例では、ASM は Delphi や C よりも約 50% 高速です。