1

我正在考虑使用 Microblaze 的汇编语言创建一些代码,但我不知道如何加载具有 32 位数字的通用寄存器。我浏览了指令集,但只看到可以加载的 16 位立即数。

有人可以提供一个如何做到这一点的例子。

我可以用

shi r8 r0 %0  /* where %0 is to the top 16 bits of a variable */
then shift it ?
and then load r8 bottom bytes?

我很困惑。任何能帮助我指出正确方向的帮助都会很棒。

4

1 回答 1

1

来自Microblaze 参考指南

B 类指令有一个源寄存器和一个 16 位立即数操作数(可以通过在 B 类指令前面加上一个 imm 指令将其扩展为 32 位)。

这意味着,如果您使用汇编语言编写,则可以使用 32 位立即数而无需担心:

or r1, r0, 0x12345678

汇编器会将其扩展为:

imm 0x1234
or r1, r0, 0x5678
于 2016-11-21T15:05:13.057 回答