gpt4 book ai didi

assembly - 关于加载字 (lw) 与加载地址 (la) 以及 mips 程序集中偏移的混淆?

转载 作者:行者123 更新时间:2023-12-04 00:32:12 25 4
gpt4 key购买 nike

所以我对组装还很陌生,我有很多问题。例如,如果在数据段中我输入这个

.data

n:.word 4

并在文本段
.text
lw $t0, n

$t0 现在存储值 4 还是 n 的地址?
因为我知道如果 n 是一个数组并且如果我输入 lw $t0 4(n) $t0 存储 n(内容)的第一个 VALUE。如果我输入 lw $t0 n 然后 $t0 存储地址。

另外我想知道我是否要设置 4 的偏移量来注册 $0 像这样:
lw $t0 4($0)

$t0 会保持 0 吗?

最佳答案

lw 从内存中加载一个单词。 lw $t0, n 从符号 n 的地址读取。lw $t0, 4($t1) 从生成为 $t1 + 4 的地址读取。lw $t0, 0x10000 从地址 0x10000 读取。

除了第二条,都是伪指令。

la 加载地址。 la $t0, n 将符号 n 的地址放在 $t0 中。la $t0, 4($t1) 将生成为 $t1 + 4 的地址放在 $0 中。

这些都是伪指令。

li 立即加载。 li $t0, 10000 将立即数 10000 放入 $t0

这是一个伪指令。

The central point is that MIPS has 16-bit immediates (constants) for I-type instructions, so the real form of li and lw don't permit to move a value greater than 0x10000 or access and address above 0x10000.
汇编器通过生成两条或更多条指令来绕过它。la 理论上不需要,li 可用于加载符号的地址,因为在此上下文中所述地址是立即数,但引入了特定的助记符。

关于assembly - 关于加载字 (lw) 与加载地址 (la) 以及 mips 程序集中偏移的混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49550512/

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