我將一個Delphi 32位應用程序移植到Pascal腳本 - 它不支持asm,而我只有64位機器,所以我甚至不能運行代碼並模仿它。在Pure Pascal中需要這4個短Pascal Asm例程
{$ASMMODE INTEL}
function BitScanForward(var BB:Int64):Integer; assembler;
asm
bsf eax, dword ptr [BB]
jnz @@2
@@0: bsf eax, dword ptr [BB+04h]
add eax, 20h
@@2:
end;
function BitScanBackward(var BB:Int64):Integer; assembler;
asm
bsr eax, dword ptr [BB+04h]
jz @@0
add eax, 20h
jnz @@2
@@0: bsr eax, dword ptr [BB]
@@2:
end;
function BitCountAsm(const BB:Int64): Integer; assembler;
asm
mov ecx, dword ptr BB
xor eax, eax
test ecx, ecx
jz @@1
@@0: lea edx, [ecx-1]
inc eax
and ecx, edx
jnz @@0
@@1: mov ecx, dword ptr BB+04h
test ecx, ecx
jz @@3
@@2: lea edx, [ecx-1]
inc eax
and ecx, edx
jnz @@2
@@3:
end;
function BitScanForward2(BB:Int64): Integer; assembler;
asm
bsf eax, dword ptr BB
jnz @@2
@@0: bsf eax, dword ptr BB+04h
add eax, 20h
@@2:
end;
我想得到那些純粹的帕斯卡。我還看到了一個YouTube視頻,其中有人演示了Asm-> Pascal(但找不到應用程序 - 是否有一個?)。
感謝, OZZ
我投票結束這個問題作爲題外話,因爲這不是一個編碼服務。 –
那麼你可以推薦一個網站嗎? –
在C:http://graphics.stanford.edu/~seander/bithacks.html –