我希望bsr在64位数字上运行。但是,以下内容仅适用于输入的低32位:
function BSR64(const Val: Int64): Integer;
begin
asm
bsr eax, [Val]
...
我该怎么做?
我正在使用Lazarus以64位模式进行编译。
如下访问64位寄存器:
bsr rax, [val]
eax
是低32位。 ax
是低16,而al
是低8。
使用32位寄存器目标意味着内存的32位操作数大小。 BSR要求它们匹配,就像movzx
和movsx
以外的几乎所有其他指令一样。