x86 汇编编程(GAS 语法):`shl' 的操作数类型不匹配
x86 Assembly Programming (GAS Syntax): Operand type mismatch for `shl'
我正在尝试将 EAX 寄存器中存储的数字移动 EBX 寄存器中存储的数量。但是,当我尝试使用以下 shift 语句执行我的程序时:
shll %ebx, %eax
我在编译时检索到以下错误:
Error: operand type mismatch for `shl'
我对这个错误的含义感到困惑,据我所知,将寄存器引用作为参数传递应该是移位函数的正确用法。
x86 指令中的移位计数必须是常量或在 %cl 寄存器中。您不能将任何其他寄存器用于轮班计数。 %ebx 既不是常量也不是 %cl,所以你得到一个错误。
Intel's manual 显示 shl
.
的可用形式
如果您可以假定支持 BMI2 扩展,shlx %ebx, %eax, %eax
允许移位计数为任意寄存器,并且在 Intel CPU 上速度更快。 (https://www.felixcloutier.com/x86/sarx:shlx:shrx)
由于此问题是该消息的热门搜索引擎之一:立即 轮班计数所需的语法是:shr , %ebx
在此处找到:
我正在尝试将 EAX 寄存器中存储的数字移动 EBX 寄存器中存储的数量。但是,当我尝试使用以下 shift 语句执行我的程序时:
shll %ebx, %eax
我在编译时检索到以下错误:
Error: operand type mismatch for `shl'
我对这个错误的含义感到困惑,据我所知,将寄存器引用作为参数传递应该是移位函数的正确用法。
x86 指令中的移位计数必须是常量或在 %cl 寄存器中。您不能将任何其他寄存器用于轮班计数。 %ebx 既不是常量也不是 %cl,所以你得到一个错误。
Intel's manual 显示 shl
.
如果您可以假定支持 BMI2 扩展,shlx %ebx, %eax, %eax
允许移位计数为任意寄存器,并且在 Intel CPU 上速度更快。 (https://www.felixcloutier.com/x86/sarx:shlx:shrx)
由于此问题是该消息的热门搜索引擎之一:立即 轮班计数所需的语法是:shr , %ebx
在此处找到: