我正在将一个 Delphi 32 位应用程序移植到一个不支持 asm 的 Pascal 脚本,而且我只有 64 位机器,所以我什至无法运行代码并模仿它。
{$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(但找不到该应用程序 - 有吗?)。