• ベストアンサー

MIPSアセンブリ言語で配列を宣言するには?

現在MIPSアセンブリ言語を学習していますが、配列に相当するものの宣言の仕方を詳しく知りません。 int items[5] ={0,0,0,0,0}; (C言語の場合) のような配列をMIPSで用意するなら、 items: .word 0,0,0,0,0 としてやるなどすればよいことまではわかっていますが、もし配列の要素数が500だった場合、上で0を500個も書かなければならないのでしょうか。短く書ける方法はありませんか。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8525/19379)
回答No.1

items: .space 2000 で2000バイト(1wordが4バイトなら500word分)が確保される。 但し、中身は初期化されないので注意。

vasta12500
質問者

お礼

勉強になります。ありがとうございました。

関連するQ&A

  • Javaの配列の宣言方法のメリット?

    1週間ほど前からJavaを独学している者です。 C言語をその前からやっていて、初心者レベル程度ならわかると思います。 そこで、質問です。 C言語の配列宣言:   int array[10]; Javaの配列宣言:   int array[] = new int[10]; 二つの言語とも、要素10個のarray1次元配列変数を宣言していると思います。 C言語の書き方はシンプルなので、納得がいきますが、Javaの方はどうしてこの形で宣言をするのかわかりません。(自分が言語製作者ならシンプルな書き方を採用します) だから、このような宣言の方法をとるということは何か理由があるのだと思います。 自分が思うところ、JavaはC言語より、柔軟で多機能だとおもうので、その影響で汎用性をますために、 長くなっているのかな~?と思っています。 こんごJavaの学習を進めていくと、例えば、   int array[] = new double[10]; //←エラーになりました みたいに型のちがう、宣言が出てきたりするのでしょうか? ちらっと、学習に使っている本をみたところ、動的配列の作成は別の操作で実現しているようなので、 「動的とは関係ないのかな?」と思っています。 長くなりましたが、Javaの配列宣言のメリットを教えてください。

    • ベストアンサー
    • Java
  • 要素数・要素の値が未定の配列の宣言について(C言語)

    要素数・要素の値が未定の配列の宣言について(C言語) タイトルの通りプログラムの内容上、要素の数とその数値がプログラムの途中で算出されるため 最初の宣言の段階では両方ともその数が未定です。 こういった場合、配列の宣言はどのようにすればよろしいのでしょうか? どなたか教えていただけるととても助かります。よろしくお願いします。

  • MIPSのアセンブリ・コードの問題です。

    CコードからMIPSアセンブリコードへの変換問題を教えてください。 以下のC のコードに対応するMIPS のアセンブリ・コードを書け。 C コード: #define TAB_SIZE 8 int tab[TAB_SIZE]; void main() { int i; for (i = 1; i < TAB_SIZE; i++) { tab[i - 1] = tab[i]; } } • SPIM でのシミュレーションのため、 tab[8] = {8, 9, 10, 11, 12, 13, 14, 15}; としてコードを書け。つまり、データ・セグメントを次のようにせよ。 .data tab: .word 8, 9, 10, 11, 12, 13, 14, 15 • SPIM のDATA セクションが以下のようになることを確認せよ。 [0x10010000] 9 [0x10010004] a [0x10010008] b [0x1001000c] c [0x10010010] d [0x10010014] e [0x10010018] f [0x1001001c] f 1

  • C++言語の配列の呼び方,動的・可変長の違い

    C++言語での配列の名称についての質問です. int Array[10]; みたいに宣言する普通の配列は「静的配列」と呼びますよね.コンパイル時に定数で要素数を指定しておかなければならないからですよね. これに対して,new[]演算子を用いて int *Array = new int[n]; といったように確保する配列はなんと呼ばれるのでしょうか. 実行後に変数を用いてその要素数を動的に指定できるので,「動的配列」と呼ぶ人が周りには多いです(「ポインタ配列」とも).しかし,C言語でのrealloc関数みたいに,直接に配列長を変化させるといったようなことはできませんよね. (改めてnew[]してmemcpy()すれば出来るのでしょうが) そこで,配列長をプログラム中で自在に変化させる方法としてstd::vectorを利用する方法がありますよね.このvectorを「動的配列」と呼ぶ人もいました. 私は,new[]したものは動的に要素数を指定できるがその後の配列長は固定であり,vectorはいつでも配列長が可変なので int Array[10]; ・・・静的固定長配列(静的配列) int n = 10; int *Array = new[n]; ・・・動的固定長配列 std::vector<int> v; ・・・可変長配列 と呼んでいるのですが,一般的にはそれぞれどのように呼ばれるのでしょうか. また,最近はstd::arrayをいうものを知りました.これについてもどのように呼ばれるのか,教えてください. よろしくお願いいたします.

  • 配列の要素数を調べる方法

    配列の中にいくつ要素があるか後から調べる方法はあるでしょうか? int test[4][3] = {   {0,1,2},   {0,1,2},   {0,1,2},   {0,1,2}, } ; 上のケースだと、X方向に3、Y方向に4つの 要素があります。しかし、これだとあらかじめいくつ要素があるかを決めて 置かないといけません。 例えば、 int test[] = {0,1,2,3....} みたいに宣言された場合や、 char *test[] = {   "ああああああ",   "いいいいいい",   "うううううう",      ・      ・ //(これは文字列の数を要素数とします) } ; のように宣言された二次元配列などで、後から配列内にいくつ要素があるかを 調べることなどは可能でしょうか?

  • MIPS Assembly

    MIPSアセンブリの授業を取っている者です。習い始めたばかりでいきなり複雑な課題を出されてしまいました。 使用しているPCは大学にある普通のDELLでOSはVISTAです。spim,PCspim,xspimで作成実行しろと言われました。 program inputとしてwindow,image,sizeを、return値として$v0,$s0,$s1を用意します。 windowは4×4サイズの2次元配列を、imageは16×16サイズの2次元配列を持ち、それぞれのサイズはsizeにストアされます。 問題の内容ですが(わかりずらいかもしれませんが、すみません)、例えば、配列windowに 0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6 そして配列imageに 0 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 4 5 6 7 8 9 10 11 12 13 14 15 2 3 32 1 2 3 12 14 16 18 20 22 24 26 28 30 3 4 1 2 3 4 18 21 24 27 30 33 36 39 42 45 0 4 2 3 4 5 24 28 32 36 40 44 48 52 56 60 0 5 3 4 5 6 30 35 40 45 50 55 60 65 70 75 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 0 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 0 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 0 11 22 33 44 55 66 77 88 99 110 121 132 143 154 165 0 12 24 36 48 60 72 84 96 108 120 132 0 1 2 3 0 13 26 39 52 65 78 91 104 117 130 143 1 2 3 4 0 14 28 42 56 70 84 98 112 126 140 154 2 3 4 5 0 15 30 45 60 75 90 105 120 135 150 165 3 4 5 6 の値が入っているとします。そしてimageの一番左端上を座標(0,0)とします。 次にwindowの4×4のマスをimageの一番左端上の4×4のマスと比較し、同じ座標にあるwindowの値とimageの値の絶対値を求めます。上の例ではこうなります。 window   比較するimageのマス 0 1 2 3      0 1 2 3 1 2 3 4      1 2 3 4 2 3 4 5      2 3 32 1 3 4 5 6      3 4 1 2 4×4のマスですから、合計16個の絶対値が求まります。そしてその16個の絶対値を足します。この例では絶対値の合計は40になります。 それが終わったらwindowのマスをそのままx軸に1、右にずらします。そしてまた同じように、同じ座標にあるwindowの値とimageの値の絶対値を計16個求め全て足します。今度の比較はこうなります。 window   比較するimageのマス 0 1 2 3      1 2 3 0 1 2 3 4      2 3 4 4 2 3 4 5      3 32 1 2 3 4 5 6      4 1 2 3 この作業を13回繰り返すと、windowがimageの一番右端に到達します。そうしたらwindowをimageの一番左端に戻します。ただしこの時、windowをY軸に1、下にずらします。 window   比較するimageのマス 0 1 2 3      1 2 3 4 1 2 3 4      2 3 32 1 2 3 4 5      3 4 1 2 3 4 5 6      0 4 2 3 そして同様の事をwindowがimageの一番右端下に来るまで繰り返します。上の例では最後の比較はwindowとimageの値は全て同じですから全ての絶対値は0なので合計値も0になります。 そして合計169個の値が求まるはずです。その169個の中から一番小さい値を$v0に格納します。次にその一番小さい値がどこで求まったかわかるように、比較したimageの4×4のマスの一番左端上のX座標を$s0に、 Y軸座標を$s1に格納し、$v0、$s0、$s1の値を出力します。上の例では、最後の比較が最小値(0)でしたので、$v0=0,$s0=12,$s1=12となります。 どなたかお解かりになる方いらっしゃいますでしょうか。宜しくお願いいたします。 配列が見にくい場合はこちらをごらん下さい。 pass: assembly http://www.dotup.org/uploda/www.dotup.org2214.txt.html

  • 配列変数の宣言「その2」

    「その2」 「その1」でも述べましたが、配列変数の宣言の仕方は2種類あると思います。 (1)・・・ int hairetu[]; (2)・・・ int [] hairetu; この宣言をした後、init()メソッドを使いこの2つの配列変数の範囲(?)を指定したいと思います。 (1)の指定方法・・・ hairetu = new int[10]; (2)の指定方法・・・ hairetu[] = new int[10]; (2)を指定するときは(1)の指定方法が使えませんでした。これはなぜでしょうか? 逆に、(1)を指定するときには(1)は配列変数であるにもかかわらず、[] なしでも指定ができるのでしょうか? 知っていれば教えてください。

    • ベストアンサー
    • Java
  • 配列変数の宣言「その1」

    「その1」 僕の見たことのある配列変数の宣言の仕方は2種類あります。 (1)・・・ int hairetu[]; (2)・・・ int [] hairetu; 現在は配列変数であることが分かりやすいという点で (2)が推奨されているというようなことは本で読んだことがあります。 今まではどちらかというと(1)をよく使っていました。 そこで、みなさんのご意見を聞いて、 今後どちらを使うのか考えてみたいと思いました。 (1)の良い所や良くない所、(2)の良い所や良くない所などもあれば教えてほしいです。

    • ベストアンサー
    • Java
  • 配列の要素数に変数を入れたいときには

    よろしくお願いします。 配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。 具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。 ご教授ください。

  • Cなどで要素の数が固定できない配列はどうやって実現しますか?

    配列について質問します。 BASIC系では配列は動的配列で要素の数が自由に変えられます。 ですが、C等では宣言時に配列の要素の数を決めておかねばならなかったと思います。 もし、C等で要素の数がわからないけど、配列を使いたい場合、どうすればいいのでしょうか? どのように実現するのでしょうか? 配列と同じ使い勝手なら配列でなくともかまいません。 今はVBAでプログラムを組んでいるので、動的配列を使えばすむのですが、いずれ他の言語に移植したいので、できるだけ使わないようにしたいと思っています。 よろしくお願いいたします。