【MIPSマシン】SPIM 【エミュレータ】
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNGMIPSマシンエミュレータのSPIMについて語りましょう。
関連サイト
公式サイト。Larusは現在MSにいるようです。
http://www.cs.wisc.edu/~larus/spim.html
SPIMマニュアルの日本語訳
http://kakugawa.aial.hiroshima-u.ac.jp/Lect2002/prog/spim/spim.html
ソース
http://www.cs.wisc.edu/~larus/SPIM/spim.tar.gz
Windows 実行形式
http://www.cs.wisc.edu/~larus/SPIM/pcspim.zip
参考図書
「コンピュータの構成と設計」いわゆるパターソン&へネシー。
http://www.amazon.co.jp/exec/obidos/ASIN/482228056X/249-4660146-5829925
0002デフォルトの名無しさん
NGNGこれなに?
00031
NGNG学生さんの中にはこれでアセンブラの勉強をした方も多いのでは
ないでしょうか。
0004デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/482228056X/
http://www.amazon.co.jp/exec/obidos/ASIN/4822280578/
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG/ このスレは無事に /
/ 終了いたしました /
/ ありがとうございました /
/ /
/ モナーより /
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
∧_∧ / /∧_∧
( ^∀^) / /(^∀^ )
( )つ ⊂( )
| | | | | |
(__)_) (_(__)
00071
NGNGこの板にはSPIMでアセンブラの勉強をしたかたはいらっしゃらない
のでしょうか。比較的ポピュラーなアプリだと思っていましたが、そ
うでもないようですね。
CやC++を扱ううえで、アセンブラはさけて通ることのできない領域
です。MIPS CPUはx86などと違い単純な命令セットをそなえたCPUで
すので、理解がはやいと思います。現在プログラマ初級者の方や、
「なぜコンピュータは計算できるのか?」といった根本的な疑問を
もっている方には是非SPIMで遊んでみると面白いとおもいます。
関連スレ
アセンブラヽ(`Д´)ノモルァ
http://pc3.2ch.net/test/read.cgi/tech/1016991911/
0008デフォルトの名無しさん
NGNG> CやC++を扱ううえで、アセンブラはさけて通ることのできない領域
本気でいってんのか?馬鹿じゃねーの?
0009デフォルトの名無しさん
NGNG脳内最適化するのは。
0010デフォルトの名無しさん
NGNG自分が速いと思っていた書き方が逆に足かせになっていたので、
これからは読み易さ重視で書こうと思った。
しばらくして、今度はIA-32を出力させた。
これjからはアセンブラソースがどう出力されるかは
考えないようにしようと思った。
00111
NGNG私も、最適化はもう完全にコンパイラの仕事だと思っています。
ただ、CやC++のポインタの理解にはアセンブラ、というかレジ
スタとメモリ構造の理解が必要不可欠だと思います。
もちろん何も考えなくてもコンパイルすると実行形式になるので
すがね。一応お勉強のためのソフトですから。
# もっとも完全にSPIMをマスターしても、次はシステムコール、
# つまりOSのお勉強がまっているのですが。
0012デフォルトの名無しさん
NGNGどうしてもクリティカルなタイミングが存在してしまうと聞いた。
そんなんで大丈夫なのかとは思ったが、
取りあえず問題なく動作していたようだった。
この辺、実際にはどうなんでしょう?
許可/禁止の処理はこんなんだったはず。
mfc
nop
ビット操作
mtc
0013デフォルトの名無しさん
NGNGパタヘネの本に、
「MIPS の PC 相対アドレシングではアドレスを PC+4 からの相対位置で表す」
と書いてあったと思うのだけど、
SPIM のレジスタウィンドウを見ると、どうも SPIM では PC+4 ではなく PC
からの相対位置でアドレシングを行っているような気がしました。
その時は「まー細かいことだし別にいいか」と思って深く考えなかったのだけど、実際のところどうなんですか?単なる俺の勘違い?
00141
NGNGMIPSのコプロセッサに割り込み許可ビットはあるよ。MIPS用のリアル
タイムOSがあるぐらいだからそのへんは大丈夫では?(と思う)
>>13
手元のパタヘネ第2版を見ると、「分岐先は分岐命令の近くにある公
算が大きいからMIPSでは(PC+4)を基準にする」と書いてある。でもエ
ミュレータであるSPIMは分かりやすさのためにそうしないだけなんじ
ゃない?
# ム板にある以上、あんまり本当のMIPS(VRシリーズとか)のスレには
# したくないです……。
001512
NGNGコプロセッサにある割り込み許可ビットを1命令で操作できないってこと。
読んで、ビット操作して、書き込むというように3命令以上必要なので、
読んだ直後に例外が発生する可能性がでてくる。
例外内でコプロセッサの他のビットを操作した場合、
例外から戻ってきたときに、上書きしてしまい、例外内での操作が反映されなくなる。
単純に考えるとこうなるんだけど、ある決まり事があって、
それに従えばこういう問題を回避できたりするのかなとか考えてた。
組み込み屋なんで、VRシリーズとかいわれても、わからなったりします。
(ワークステーションに使われてたんでしたっけ。)
組み込み関係の話は不可ですか?
(とはいえあまりネタもないんですが)
0016デフォルトの名無しさん
NGNG割り込みが発生した直後に、
- カーネルモード
- 割り込み禁止
に設定されるから、割り込みが処理されずにネストする可能性は無いと
思うけど。
00181
NGNG思ってたのに忙しくてカキコできない・・・
00191
NGNG0021デフォルトの名無しさん
NGNGどこ大学の何学科の学生?
昔早稲田の情報科で同じことをやった。
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024Java厨あるいはマイクロプログラム万世
NGNGhttp://www.ontko.com/mic1/
参考図書「構造化コンピュータ構成」
http://www.amazon.co.jp/exec/obidos/ASIN/4894712245/250-6579255-2641056
SPIMと違ってあんま役立たないけど
0025デフォルトの名無しさん
NGNG情報系の学部学科で、いくつかSPIM使っているところを知ってるよ。
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGハイレジスタとローレジスタってどうちがうのですか?
ネットで調べてもサイトがあまりひっかかってこなくて困っています
0032西門 ◆J1DLkSnXwI
NGNG上位32bitがはいるのはHi, 下位32bitが入るのがlo
また、割算命令を実行すると、商がloに、剰余がhiに入る。
0033デフォルトの名無しさん
NGNGそういえばハイレジスタ、ローレジスタというとそういう風にみるのでしたね・・
私の開発環境ではサムでプログラムを組むのですが
ハイレジスタにmovでデータを転送しようとすると
コンパイラに怒られます
でもローレジスタの場合は怒られないのです
この違いはどういう理由によるものなのでしょうか?
ただの仕様、と片付けてしまっていいんでしょうか?
0034西門 ◆J1DLkSnXwI
NGNG同じようには使えない。
hi, loレジスタとのやりとりは
mthi, mtlo, mfhi, mflo命令を使う。
0035デフォルトの名無しさん
NGNGハイレジスタは汎用レジスタではない、ということなんでしょうか?
確かに、かなり使用が制限されているイメージがあります
0037デフォルトの名無しさん
NGNGの命令表に
Rd Rs Hd Hs というような英文字がありまして前二つは
ディスティネーションレジスタ、ソースレジスタ、だと思ったのですが
HdとHsのHの意味がわかりません・・
しかも表をみると
RがlowレジスタでHがhighレジスタ、という風にもよめます。
なんでRがlowなんでしょうか・・
教えてください・・
0039デフォルトの名無しさん
NGNGなんでこれ俺も持っているんだろう(´Д`)
0040デフォルトの名無しさん
NGNGなんで$0は用途が決まっているのに"汎用レジスタ"っていうんだろう。
CPUスペックで汎用レジスタ32本っていうと、なんかサバ読んでるかんじ。
0041デフォルトの名無しさん
NGNG>なんで$0は用途が決まっているのに"汎用レジスタ"っていうんだろう。
他の汎用レジスタと同じようにオペランドに指定できるから。
>CPUスペックで汎用レジスタ32本っていうと、なんかサバ読んでるかんじ
まあね。でもおかげで色々べんりだからいいじゃないか。
$0がアレじゃなかったら、命令や命令フォーマットを増やす必要があっただろう。
VAXみたいに、レジスタが16本しかないくせに、PCもFPもSPも汎用レジスタなんて
やつよりましだろう。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGでも、バイト単位で処理する時は、リトルの方がオフセット計算が楽、
0046デフォルトの名無しさん
NGNG256^nの桁がnバイト目に来るのが合理的。
こうしておけば、同時に
(65536^n)の桁が2バイト整数nワード目
(2^32^n)の桁が4バイト整数nワード目
…
でもある。
0047デフォルトの名無しさん
NGNGネットワークが絡むことが多くなってるしな。
0048デフォルトの名無しさん
NGNGHaa??
0049デフォルトの名無しさん
NGNG最近出たネットワークプロセッサも全部Littleなんすけど…
0050デフォルトの名無しさん
NGNGCPUの話じゃなくて、ネットワークエンディアンのことだろ?
0051デフォルトの名無しさん
NGNGここはプロセッサ(のシミュレータ)のスレなんすけど…
005247
NGNG>>47, 51
プログラムで扱うデータがネットワークバイトオーダのものも多くなってるので
CPUもそれに合わせてくれると(プログラムが)容易になる と言いたいのだよもん。
>42の質問が
このスレタイのMIPSシミュレータに限る ということならどっちでもいい。
0053デフォルトの名無しさん
NGNGだから、別に容易にならないって。
それが分ってるから>>49なのよ。
005452
NGNG(´・ω・`)そなんだぁ
■ このスレッドは過去ログ倉庫に格納されています