使用指令add而不是LC-2K进行位移

时间:2016-02-02 06:45:56

标签: c

我正在尝试仅通过使用LC-2K指令进行逻辑右移和逻辑移位!在ARM ISA,汇编语言中,有LSR和LSL用于在汇编语言中写入位移,但LC-2K没有这样的选项。

LC-2K中唯一可用的选项是: Lw,sw,beq,jalr,add,nor,noop,halt。

我似乎无法通过使用LC-2K汇编语言中的这些指令来找到一种方法来进行任何位移。

请给我一些建议。 先感谢您!

1 个答案:

答案 0 :(得分:0)

您可以通过向自身添加寄存器来向左移1。您可以使用循环向左移动多个。

右移可以通过将除底部之外的所有位复制到临时寄存器的循环完成,然后将暂存寄存器复制回源。我不熟悉LC-2K,但是nor应该足以让你屏蔽掉比特,beq会让你测试屏蔽位是否设置,add将允许您将该位复制到目标寄存器,以及在循环之前将工作位移位一位。我能想到的最简单的方法是使用两个计数器,一个从1开始(用于写入),另一个从2开始(用于读取)。可能有其他方法可以做到这一点,但那个问题发生在我身上。