gpt4 book ai didi

assembly - MIPS:不使用伪代码的 la 指令的等价物?

转载 作者:行者123 更新时间:2023-12-03 06:22:49 26 4
gpt4 key购买 nike

引用文献说la(加载地址)的伪代码被翻译为:

Pseudo : la $1, Label   

lui $1, Label[31:16]
ori $1,$1, label[15:0]

但是当我尝试在 MARS 中汇编代码时,出现错误:

“无效语言元素:16]

如果我删除 [31:16] 部分,我会得到

“标签”:操作数类型不正确

有什么想法吗?

最佳答案

这意味着标签的 16 个最高有效位设置在 $1 中。然后,16 个较低有效位与 16 个最高有效位进行或运算。

Here你可以找到lui指令的描述。它将标签地址的 16 msb 位加载到寄存器上,并将 16 lsb 归零。

这样,您就可以使用 32 位指令加载 32 位地址(以 mips32 为单位)。

它绝不是“真正的代码”。 [31:16]/[15:0] 部分不是有效的 mips,仅供您了解位移动。

编辑:为了响应您的评论,您必须知道要使用 lui 指令加载的地址。为此,您可以使用标签来指示所需的地址。例如

.data 
my_var: .asciiz "This is a nul terminated string"

.text
andi $a0,$a0,0x0000ffff
lui $a0,my_var
ori $a0,$a0,my_var

关于assembly - MIPS:不使用伪代码的 la 指令的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1535228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com