Pascal Assembly Off Topic [关闭]

问题描述 投票:-1回答:1

[尝试删除此问题〜因为有人觉得请问如何将4行汇编移植到本机pascal上是不重要的...

assembly pascal
1个回答
2
投票

类似:

 function BitScanForward(var BB:Int64):Integer;

 var i : integer;
     work:int64;
 begin
   Work:=bb;     
   i:=0;
   while (i<64) and ((bb and 1)=0) do
     begin
       inc(i);
       bb:=bb shr 1;
     end;
   result:=i;
 end;

BitscanBackward相同,但测试最高位。可能最好是未签名的,但我无法测试,因此我将其作为练习留给读者。在上面的版本中,第64位也可能很危险,在这种情况下,请使“工作”成为uint64。

 function BitScanForward(var BB:Int64):Integer;

 var i : integer;
     work:int64;
 begin
   Work:=bb;       result:=0;
   for i:=0 to 63 do
     begin
       if (bb and 1)=1 then
          inc(result);
       bb:=bb shr 1;  
     end;  
 end;
© www.soinside.com 2019 - 2024. All rights reserved.