如何将简单的字符串 cpp 变量转换为 MIPS 代码

问题描述

听起来很简单,但我已经找了一个小时左右了。

我想知道是否有一种方法可以让我使用字符串启动寄存器,而不必将字符串存储在 .data 中。

比如我可以做; li $t0,0 有设置 $t0 = 0 的作用。这和我在 cpp 中说 int a = 0 是一样的。

但是,有没有类似的方法可以将 std::string a = "Hello" 转换为 MIPS?

目前我可以做这样的事情

.data
mes: .asciiz "Hello" #declares 'mes' as "Hello"

.text
la $t0,mes #sets $t0 equals to the content of 'mes'

但我希望我可以通过做类似的事情跳过第一步 sc $t0,"Hello" #set $t0 to characters "Hello" (note: this is not valid MIPS)

解决方法

字符串只不过是指向以 0 值字节结尾的字节/字符的指针。 由于 MIPS 编译器没有原生的 C++,我们可以根据常识争辩说,在 MIPS 中定义和初始化字符串的最简单方法是

.data
mes: .asciiz "Hello"

.text
la $t0,mes