Mips:将变量存储在另一个变量中

Hun*_*len 3 assembly mips

我正在尝试将C程序转换为MIPS汇编代码

在我的C代码中,我有一个这样的行:

int base;
int count;

count = base;
Run Code Online (Sandbox Code Playgroud)

在MIPS中,我如何在计数内存储base的值?我看到的加载和存储的唯一指令是lwsw它们的原型只来自寄存器源 - > ram目的地或ram源 - >寄存器目的地.

任何帮助,将不胜感激.

编辑 我希望这可以在一个指令中完成,类​​似于

move base acc

但显然这是不可能的(至少我没有发现类似的指令的例子),我选择了这个:

lw $t0, base   //load base into $t0
sw $t0, count  //store the value of $t0 in count
Run Code Online (Sandbox Code Playgroud)

如果有一条单行指令要做,如果有人知道的话会更好.

dus*_*uff 11

MIPS不支持直接的内存到内存移动.(实际上,大多数常见的CPU都没有 - 甚至x86也没有.)你需要使用lw/ sw来移动数据.

在架构上,这是因为MIPS被设计为每个周期仅执行一次内存访问 - 执行内存到内存的移动需要两次访问(一次读取,一次写入)或停止管道.


mar*_*kgz 5

以下是如何在MIPS中执行此操作

la $t0, base     // load the address of "base"
la $t1, count    // load the address of "count"
lw $t2, 0($t0)   // load the data at location "base"
sw $t2, 0($t1)   // store that data at location "count"
Run Code Online (Sandbox Code Playgroud)

在单个指令中不可能对存储器进行存储器移动.