【发布时间】:2017-10-24 02:19:28
【问题描述】:
MIPS 有一个 Load Immediate (LI) 伪指令,用于将 32 位立即数加载到寄存器中。但它没有立即存储 (SI) 指令将 32 位立即值存储到内存中。谁能解释一下为什么?
【问题讨论】:
-
mips 没有立即加载指令,有 lui 和 ori 是真正的指令 li 是伪指令,可以将其视为宏。
-
这些(lui 和 ori)都不是在内存上操作的,所以有一个“就像”li 一样的 si 也意味着不在内存上操作。
-
一条同时包含立即数和内存地址的指令会比指令格式允许的长得多。
-
伪指令是汇编器的特性,而不是处理器的特性。 MIPS CPU 没有 LI 指令,它是具有 LI 伪指令的 MIPS 汇编程序。这意味着没有什么能阻止您创建自己的汇编程序或修改现有的汇编程序来创建自己的 SI 伪指令。您甚至可以使用现有汇编程序的宏功能来完成。但是,您需要使您的伪指令生成 MIPS CPU 可以执行的真实 MIPS 指令。因此,您需要弄清楚您的 SI 指令将使用哪些真正的 MIPS 指令。
标签: assembly mips instruction-set immediate-operand instruction-encoding