c - 将单个 C 行转换为 MIPS 程序集

标签 c assembly mips

我正在上一门计算机体系结构的大学类(class),所以我对汇编语言不熟悉。我的问题是,如何在不使用伪指令的情况下将以下代码从 C 语言转换为 MIPS 汇编语言?

B [8] = A [i-j]

i 和 j 被分配给寄存器 $s3 和 $s4,A 和 B 的基地址在寄存器 $s6 和 $s7 中。到目前为止,我有:

sub $t0, $s3, $s4
sll $t0, $t0, 2
lw $t1, $t0($s6)   #Is this line allright?
add $s5, $t1, $zero
sw $s5, 32($s7)

我不确定在第三行中使用寄存器 $t0 作为寻址内存的偏移量。提前致谢。

最佳答案

没有。而是通过将 $t0 添加到 $s6 来计算所需的地址。

sub $t0, $s3, $s4
sll $t0, $t0, 2
add $t0, $t0, $s6
lw  $t1, 0($t0)
sw  $t1, 32($s7)

关于c - 将单个 C 行转换为 MIPS 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329124/

相关文章:

c - dll 的 dumpbin 输出中的 "virtual address"

将 C 更改为 MIPS 并按位或

c - float 计算结果错误

c - fprintf C中 '\n'的作用是什么?

c - 尝试复制 malloc 时遇到段错误问题

c++ - 如何在 Linux 中反汇编二进制可执行文件以获取汇编代码?

c - _IO_puts 和动态指令计数

assembly - MIPS汇编中的两条顺序分支指令?

mips - 'jalr $a0, $a0' 的正确行为是什么?

c - fork 进程同时打印