SPIMで遊んでみる

アセンブリ言語でのHello World

 .data
str:
    .asciiz "Hello World"
    .text
    .globl main
main:
    li  $v0, 4
    la  $a0, str
    syscall
    jr $ra

.data, .text, .asciizなどはMIPSアセンブラ指令

.dataは後続の項目をデータセグメントに、.textはテキストセグメントに格納する。

.asciizは"Hello World"を主記憶に格納する。strには先頭の文字「H」のアドレスがあてられる。

str:, main:はラベル、そのあとの命令のアドレスにアセンブラが変換してくれる?シンボルとも言う?

例えばjal mainjal 0x004004cみたいな感じに

SPIMではコンソールに出力するには$v0に4、$a0に文字列のアドレスを入れてsyscallでできる。

最後にjr $raでmain関数から抜ける。

liは疑似命令。li $v0,4ori $2, $0, 4となる(ゼロレジスタとの論理和で$2に4が代入される仕組み) laはアドレスを代入する疑似命令。