0

Mips64 で配列を印刷するにはどうすればよいですか? 次のコードを使用して、QtSPIM (MIPS32) で配列を印刷することに成功しました。

.data
array:  .word   10 20 30 40 50

.text
#load base address of array
la $t1,array    
#load number of elements
ld $t2,num

loop:

#load word
lw $a0, ($t1)

#print element
li $v0,1
syscall

#print space
la $a0, space
li $v0,4
syscall

addi $t1,4
#increase counter
addi $t0, 1

bne $t0,$t2,loop


#end
li  $v0,10
syscall

daddiMIPS64 が代わりに持っていることは知っていますがaddi、まだ何かが欠けています。

4

1 に答える 1

3

syscallWinMips64 は、SPIM / MARS のような端末出力には使用していないようですが、メモリ マップド I/O を使用して実装しています (このコード例を参照)。

CONTROLポートは address0x10000にあり、ポートDATAは addressにあります0x10008

整数を出力しているので、主に次の 2 つの出力モードに関心があります。

; Set CONTROL = 1, Set DATA to Unsigned Integer to be output
; Set CONTROL = 2, Set DATA to Signed Integer to be output

例えば:

ori $a1,$0,0
lui $a1,1       ; $a1 = 0x10000 (CONTROL)
ori $a2,$a1,8   ; $a2 = 0x10008 (DATA)

lwu $a0,($t1)   ; load an unsigned 32-bit value
ori $v0,$0,1    ; 1 == print unsigned integer
sd $a0, ($a2)   ; set value to print        
sd $v0, ($a1)   ; ..and write the command to print it
于 2013-05-10T23:16:27.613 に答える