私は一定量のメモリを割り当てており、プログラムの.dataセクションで宣言した変数にこのメモリの場所を割り当てたいと思います。私は変数にメモリの場所を割り当てる方法を知っていますが、いったんそれを行うと、その変数を使って割り当てられたメモリにアクセスする方法はありますか?MIPSのレジスタにアドレスを格納する
3
A
答えて
3
私が問題を正しく理解している場合は、la
(ロードアドレス)命令を使用してアドレスをレジスタに取得することをお勧めします。その後、lw
(ロード・ワード)とsw
(ストア・ワード)命令を使用してデータを操作します。たとえば、だから、コードの内部ブロックで、あなたがメモリ位置として$t0
(またはそのことについては、他のレジスタ)を扱うことが確認でき、適切それに取り組む
.data
tmpval: .word 5
__start:
sub $sp, $sp, 12
sw $ra, 0($sp) # Return addy
sw $t0, 4($sp)
sw $t1, 8($sp)
la $t0, tmpval
lw $t1, 0($t0) # $t1 == tmpval == 5
li $t1, $2 # $t1 == 2
sw $t1, 0($t0) # tmpval == 2
lw $ra, 0($sp)
lw $t0, 4($sp)
lw $t1, 8($sp)
add $sp, $sp, 12
jr $ra
コード
次の作品を検討してください。
4
MIPSには、ロード・ワード(lw)、ロード・ハーフワード(lh)、ロード・バイト(lb)、ストア・ワード(sw)、ストア・ハーフ・ワード(sh)、およびストア・バイトsb)を挙げておきます。 $ tを登録するにはレジスタ$ sのプラスCで開催されたメモリ位置から単語をロードします
lw $t, C($s)
:彼らはすべてのメモリ位置からロードから一例であるので、ここと同じ種類の構文を使用します。すなわち$ T = [$ S + C]格納するための同様
:$ SプラスC.すなわち[$ S + Cのメモリ位置にレジスタ$ Tのワードを格納する
sw $t, C($s)
] = $ t
関連する問題
- 1. intのバイトをMIPSに格納する
- 2. CPUレジスタに変数を格納する
- 3. 文字列をレジスタに格納する
- 4. ポインタをレジスタに格納する(Visual Studio)
- 5. データセグメントにレジスタ値を格納しようとするとMIPSの実行時例外が発生する
- 6. アドレスにdwordを格納
- 7. MIPSは、境界をダブルワード、ダブル(8バイト)を格納するために、MIPSでポインタ
- 8. 即時からバイトの配列にバイトを格納するMIPS
- 9. 2レジスタの結果をメモリに格納する方法
- 10. VIM:外部コマンドの出力をレジスタに格納する
- 11. MIPS:動的メモリ(ヒープ)に文字列を格納する方法
- 12. MIPS:整数データをファイルから配列に格納する
- 13. C++変数をレジスタに格納する方法
- 14. MIPSでレジスタを復元する
- 15. MIPSレジスタ正規表現
- 16. レジスタに格納される数値の大きさ
- 17. C言語のAVR - 変数にレジスタの値を格納
- 18. MIPSがレジスタに二重の値をロードする方法は? MIPSで
- 19. 配列に格納されたアドレス
- 20. パラメータがレジスタに格納され、x86-64アセンブリのスタックに格納されないのはなぜですか?
- 21. Cの符号なしintにポインタのアドレスを格納する
- 22. レジスタ値にMIPSの定数を乗算するか?
- 23. mipsアセンブリのレジスタを "NOT"にする方法
- 24. MIPS $ k0と$ k1レジスタの使い方
- 25. mipsを使用して配列にASCII値を格納する方法は?
- 26. 1234 1234ベース16をMIPSレジスタに追加するには?
- 27. アドレスをデータベースに格納する方法は?
- 28. データベースにIPアドレスを整数として格納する
- 29. 特殊関数レジスタから変数への値の格納
- 30. char型のint型データのアドレスを格納するポインタ
あなたのスタックは、ラスト・イン・ファースト・アウト(LIFO)としてコンベンションに従うべきだと思います。 –