如何使用 Xtensa LX7 在寄存器中左移一定量
How to left shift by an amount in a register with Xtensa LX7
在 Xtensa 程序集中执行以下操作的正确方法是什么:
a4 = ( 1 << a5 )
其中 a4 和 a5 是寄存器,a5 可以包含值 0 到 3(将来可能是 0 到 7,但现在不太担心。)
我相信这一定很简单,但它似乎很棘手。
根据 Xtensa ISA,您必须使用 ssl 指令(设置左移量)将移位量加载到内部移位量寄存器 (SAR)。然后你必须使用 sll(逻辑左移)指令,它需要两个寄存器,目标寄存器和包含要移位的值的寄存器。 a4 = ( 1 << a5 )
在汇编程序中的等效表达式是:
movi a4, 1
ssl a5
sll a4, a4
在 Xtensa 程序集中执行以下操作的正确方法是什么:
a4 = ( 1 << a5 )
其中 a4 和 a5 是寄存器,a5 可以包含值 0 到 3(将来可能是 0 到 7,但现在不太担心。)
我相信这一定很简单,但它似乎很棘手。
根据 Xtensa ISA,您必须使用 ssl 指令(设置左移量)将移位量加载到内部移位量寄存器 (SAR)。然后你必须使用 sll(逻辑左移)指令,它需要两个寄存器,目标寄存器和包含要移位的值的寄存器。 a4 = ( 1 << a5 )
在汇编程序中的等效表达式是:
movi a4, 1
ssl a5
sll a4, a4