【发布时间】:2017-01-30 18:02:12
【问题描述】:
我知道shrb 代表逻辑右移。通常它与两个参数一起使用,shrb amount, %register。但是,在我正在查看的代码中,它没有使用移位量 - 只指定了一个寄存器:
shrb %dil
其中%dil 代表%rdi 的最低有效字节。
现在上面的命令是否暗示我们向右移动 1?您将如何发现这一点?有没有办法以某种方式执行命令,看看会发生什么?该文档对于提供有关省略班次量时会发生什么的信息没有帮助:https://docs.oracle.com/cd/E19253-01/817-5477/817-5477.pdf
【问题讨论】:
-
到底为什么要使用 oracle 文档。试试官方的英特尔,或者你的汇编程序。是的,默认情况下它是
1,是的,您可以将其粘贴到程序中并在调试器中运行以查看它的作用。此外,反汇编程序也可能会显示隐含的1。 -
该指令与莳萝草指令同义。它旨在腌制您的程序
-
x86 上没有这样的指令。它必须是宏或特定汇编程序专有的东西。
-
@Henrik 它是 at&t 语法
-
当它可以从操作数推导出来时它是可选的。如果你有一个内存操作数,那就不可能了。