SPIMで遊んでみる
.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 main
がjal 0x004004c
みたいな感じに
SPIMではコンソールに出力するには$v0に4、$a0に文字列のアドレスを入れてsyscallでできる。
最後にjr $ra
でmain関数から抜ける。
liは疑似命令。li $v0,4
はori $2, $0, 4
となる(ゼロレジスタとの論理和で$2に4が代入される仕組み)
laはアドレスを代入する疑似命令。