私はプログラムの任意のスコープでAに到達することができますが、これを引数としてプロシージャに渡すので、A []のメモリアドレスをレジスタ、たとえば$ a0に保存します。配列のアドレスを取得してアセンブリのレジスタに保存するにはどうすればいいですか?
sw
の代わりに私がsb
を使用した理由は、それをアセンブルするときに問題があります。
私がlb $a0, A
と言うとき、それはアドレスではない値である4
から$a0
を格納します。
.data
A: .space 16
.globl main
main:
# Initialize values in the array
addi $s0, $zero, 4
addi $s1, $zero, 8
addi $s2, $zero, 3
addi $s3, $zero, 5
# This $t0 is just used for indexing while inserting to A
addi $t0, $zero, 0
sb $s0, A($t0)
addi $t0, $t0, 4
sb $s1, A($t0)
addi $t0, $t0, 4
sb $s2, A($t0)
addi $t0, $t0, 4
sb $s3, A($t0)
li $t0, 0
私は問題に時間を費やしてくれてありがとう。それはあなたにとてもいいです。 –
私はAに達する間に問題を抱えています。私はAのアドレスを$ a0に保持し、A($ a1)に到達したいとします。その単語をロードしたいとき、$ a0($ a1)は機能しません。 $ a0を使ってどのように要素に到達できますか? –
@ M.Kaan:MIPSには1つのアドレッシングモードしかありません:register + imm32。2レジスタのアドレスが必要な場合は、一時レジスタに別の 'addu'命令が必要です。 –