用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%。