在Assembly中添加两个64位数字

15 assembly mips

所以我正在使用SPIM模拟器学习MIPS并且我坚持这个问题.

我想添加两个64位数字,存储在四个32位寄存器中.所以我添加了LO字节,然后是进位和HI字节.但是没有adc/addc命令,即添加进位.

所以我必须在状态寄存器中添加进位.但是,我究竟如何阅读这个寄存器?

如果$ t0是临时寄存器1,那么持有进位标志的状态寄存器的等价物是什么?

我google了很多,我仍然找不到任何甚至使用状态寄存器的例子.

Gun*_*iez 22

添加$ t2 $ t3 + $ t4 $ t5,结果为$ t0 $ t1

addu  $t1, $t3, $t5    # add least significant word
sltu  $t0, $t1, $t5    # set carry-in bit 
addu  $t0, $t0, $t2    # add in first most significant word
addu  $t0, $t0, $t4    # add in second most significant word
Run Code Online (Sandbox Code Playgroud)

对于问题的第二部分,没有状态寄存器.一个都没有.纳达.

  • 在添加进位`sltu $ at,$ t1,$ t5之前,做'addu $ t1,$ t3,$ t5`和'addu $ t0,$ t2,$ t4`可能会更快; addu $ t0,$ t0,$ at`因为大多数现代CPU有多个ALU/FPU可以同时运行许多指令,只要它们不依赖于彼此和以前的结果 (3认同)