问题描述
听起来很简单,但我已经找了一个小时左右了。
我想知道是否有一种方法可以让我使用字符串启动寄存器,而不必将字符串存储在 .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