assembly 指令的操作数无效

ltskdhd1  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(196)

我在"英特尔编译器"中使用内联x64汇编,并尝试向RBP寄存器添加一个巨大的值。
编译器给了我一个错误,说操作数对于那个巨大的数字是不正确的。有没有办法解决这个问题?
我的代码:

__asm add rbp, 0x7ffffffffffffff0
__asm and rbp, 0x7fffffff

编译器输出如下内容:

ld-link: : error : ld-temp.o <inline asm>:2:2: invalid operand for instruction
           add rbp, 3264300659
           ^
fkaflof6

fkaflof61#

不,没有操作码可以用这种方式完成!
但是,有一个操作码可以执行以下操作:

BigConstant = 0x7ffffffffffffff0
...
...
add   rbp, qword ptr BigConst  //48 03 2D xx xx xx xx

您也可以使用额外的寄存器来解决此问题,例如:

mov   rax, 0x7ffffffffffffff0
add   rbp, rax

相关问题