Function H32ToLow(Sdigit:LongWord):LongWord;
Asm
MOV EAX,Sdigit
BSWAP EAX
Mov Sdigit,AX
End;
Function H16ToLow(Sdigit:Word):Word;
Asm
MOV AX,Sdigit
ROR AX,8
Mov Sdigit,AX
End;
Function H16ToLow(Sdigit:Word):Word;
Asm
MOV AX,Sdigit
XCHG AL,AH
Mov Sdigit,AX
End;
说明:
BSWAP 用于交换32位寄存器里字节的顺序
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
ROL,ROR 循环位移
所以,第二个函数中,应采用XCHG的速度就比用ROL或是的ROR的速度要快,ROR,ROL需要多个周期才可以完成,而XCHG只需要一个周期即可完成!
博客展示了Delphi中用汇编实现的几个函数,如H32ToLow用于交换32位寄存器字节顺序,H16ToLow用于交换16位字节顺序。还介绍了BSWAP、XCHG、ROL、ROR等指令功能,并指出在第二个函数里,XCHG比ROL、ROR速度快,因后两者需多周期完成,XCHG仅需一个周期。
191

被折叠的 条评论
为什么被折叠?



