用Delphi寫的程序,把x指針指向的4個字節次序顛倒過來:
function toulong(x: pchar): longWord;
begin
result := (longWord(x^) shl 24) or
(longWord((x + 1)^) shl 16) or
(longWord((x + 2)^) shl 8) or
(longWord((x + 3)^));
end;
以下是用Delphi的嵌入式匯編寫法:
function toulong(x: pchar): longWord;
asm
mov esi,eax
mov ax,[esi]
xchg ah,al
shl eax,16
mov ax,[esi+2]
xchg ah,al
end;
說明:默認情況下,Delphi使用“register”方式,若參數在3個已內,
將分別使用eax、edx和ecx,超過3個參數部分將使用堆棧。返回參數的
存放視長度而定,例如8位用al返回,16位用ax,32位用eax,64位用用兩個
32位寄存器edx:eax,其中eax是低位。
效率:本例asm大約比Delphi或c快50%。