ソフトウェアの最近のブログ記事

090720_cpu00.jpg

前回の続き。連載第3回を読みながらレジスタの動作確認プログラムを書いたりとか,そんな感じ。

エラー処理をちゃんと書いてないので,変な値をレジスタにセットしようとすると落ちます。

ま,動けばいいやw

あと,ざっくり連載を最後まで読んだけど,結局これCPU作って無いじゃん!

残りはtextfieldから値を取って四則演算するだけでしょ?

つーことで,このネタはここまでにしておこう。。

個人的に,いつかやろうやろうと思っていたネタです。

CodeZineVB.NETで仮想CPUを作ろうをマターリ実装してみる。

パタヘネ読書会でもMIPSエミュレータをオレオレ実装する流れなので,雰囲気だけでも先取りしておこうと思う。

VB.NETなんて高度な言語は分からないので,Javaで頑張るぞ!

なんかよく分からんけど動いた動いたw

基本的にココに書いてあることをやっただけ。hello.asmも使わせてもらいました。

ステップ実行とかブレークポイントとか便利機能もあるみたい。

以下自分用メモ。


インストール

  • ココからPCSpimを落としてインスコする。
  • setup.exeなので特に困らないはず。


ウィンドウが4つに分かれている件

  • 一段目:レジスタの状態。実行中は変化しないけどストップしたら変わる。
  • 二段目:プログラム領域。ユーザプログラムは0x00400024から?
  • 三段目:メインメモリ上のデータ。STACKとKERNELは何のためにあるの?
  • 四段目:エラーメッセージとかいろいろ。


使い方

  • File→Openでアセンブラファイルを開く。
  • Simulator→Goで一気に実行。
  • Simulatorの中にSingle StepやらBreakpointsとかあるけど,まだ使ってないのでよく分からん。


こんな感じ

090610_spim00.jpg

090610_spim01.jpg

自分の書いたSICP問題2.17がキモい件。

というかキモいと言われたorz

ネイティブに書いていないことと,新たにリスト作ってるというのが理由。

実行結果は問題無いので表面的には同じく見えるんだけど,メモリ上のアドレスが違うんじゃね?みたいな。

新しいリスト作ってるんだからlast-pairしてないよね?とか。

こういう指摘があるから面白い!

;q2-17
(define (last-pair x)
    (list (list-ref x (- (length x) 1))))

        

無駄に長いGWを利用してK&Rを読んでみようと思い,そういえばCの環境が無いやと思って作った。

あとエディタがメモ帳しかないのでどうしようか?


MingWインスコ

  • Cの開発環境を探したら,MingWってのがあったのでコレに決定。さっそくココからMingWを落とす。
  • 得意なNext連打でインスコする。コンポーネントの所はFullにしといた。
  • パスを通す為に環境変数をごにょごにょする。(Pathに;C:\MinGW\bin追加,PATHEXTに;.C追加)
  • 適当にhelloworld.c作って動作確認。


おまけ:llvm-gccを使ってみるテスト

  • 最近LLVMがどうのこうのって話をよく聞いていたので,ついでに環境を作ってみた。
  • まずはココからLLVM-GCC 4.2 Front End Binaries for Mingw32/x86を落とす。
  • Windows上だと@LongLinkがどうのこうのと怒られたりするけど,ココを参考に解凍した。
  • パスを通す為に,環境変数Pathに;C:\llvm-gcc-4.2\binを追加。
  • さっきのhelloworld.cで動作確認。
  • ちなみにMingWなしでllvm-gcc使うと,何かいろいろ足りないみたいなメッセージが出るので注意。よくわからん。


こんな感じ

  • llvm-gccを使った方が容量が軽いんだねぇ。

   090501_gcc.jpg


参考にしたサイト

プロフィール:ttl

  • ・勉強と運動が好きです。
  • ・カエルさんも好きです。
  • ・λはもっと好きです。
  • 購読する このブログを購読

最近のつぶやき

最近のコメント

アーカイブ

このアーカイブについて

このページには、過去に書かれたブログ記事のうちソフトウェアカテゴリに属しているものが含まれています。

前のカテゴリはイベントです。

次のカテゴリはトライアスロンです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.27-ja