私はMars MIPS Simulatorにすべての素数を見つけて最大65,025を見つけ、Ulam Spiralという形で256x256ビットマップディスプレイにそれらをピクセルごとに表現するプログラムを作成しています。MARS - アドレスが範囲外です
私のプログラムのdata
セグメントは、次のようになります。私はこのdata
セグメントでやろうとしています何
display: .word 0:65536 # allocates a memory address for each pixel, and initialises each to 0 (256 x 256)
numPixels: .word 655536 # number of pixels on 256x256 display
black: .word 0x00000000 # hex code for black
white: .word 0x00FFFFFF # hex code for white
primeArray: .word 1:65025 # array of 65025 elements initialised to '1' (1 = prime, 0 = not prime)
length: .word 65025 # length of primeArray
は予約することである:
- 65,536各ピクセル
- 3に対応する言葉'65,536 'を格納する単語と黒と白の16進コード
- 65,025整数用ワード1 - 65,025
- 1ワード数'65、025' は所定の順序で
を格納します。
プログラムはprimeArray
を反復処理するSieve of Eratosthenesを使用して動作し、0
として1
として素数、非素数を格納します。 65,536ピクセルの各々を反復して白にその色のそれぞれを設定することにより、ビットマップの表示をクリアし、最初の
:これまでのところ、私は独立して正常に動作二つの機能を持っています。それはエラトステネスのふるいのアルゴリズムを用いて素数であるかどうか
primeArray
スルー第反復
とは
0
又は
1
に対応するインデックスの数を格納します。
これらの機能をそれぞれ単独で実行すると、プログラムはエラーなしで実行されます。私はcalcPrimes
続いclearDisplay
を実行しようとする場合は、私は、次のメモリエラーを取得:
line 63: Runtime exception at 0x0040009c: address out of range 0x10400000
ライン63は、その要素が素数でない場合primeArray[i] = 0
を設定し、ループの内側です。
このエラーの原因は何ですか?データセグメントは実行前に私が望んでいるものすべてを格納するのに十分な大きさですか?
clears a block of memory
というサブルーチンを含めるように指示されています - これは私の問題と関連がありますか?
郵便関連するコード。 – Michael