83's

Top > Archives > 2005 > January

January 01, 2005

ほんといい年になってくれ… 00:12

    ┏━━━ / |━━━━━┓
    ┗┳┳━ |_| ━━━┳┳┛
      ┃┃ /  ヽ     ┃┃
    ┏┻┻ |======| ━━┻┻┓
    ┗┳┳ ヽ__ ¶_ ノ ━━┳┳┛
      ┃┃ (/)     ┃┃
      ┃┃ (/)     ┃┃
    凸┃┃ (/)     ┃┃凸
    Ш┃┃ (/)     ┃┃Ш
    .|| ┃┃ (/)     ┃┃.||    あけましておめでとう
  ∧_∧   (/) ∧_∧  ∧ ∧
  ( ' A` )  (/)(´∀` )  (゜Д゜ )  漏れが留年しませんように…
  (つ  つミ (/)(⊃⊂ ) ⊂  ⊃
  |_|_|_⑩(/)_|_|_|__|  |〜
  /////ノ,,,,,,ヽ ////|∪∪
////////////  |
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
|        奉  納        |

January 03, 2005

GNOMEのメニューに登録する方法がやっとわかった 05:20

今日ネットしてたらたまたま発見したよ、GNOME2のメニューに新しく追加する方法。 あー、長かった……。てか、なんで今まで気づかなかったんだろう。 追加したいとこまで行って右クリックして、 「メニュー全体」→「このメニューに新しい項目を追加する」で追加……。 せっかくなので、eclipseを登録してみたよ。 はあ……、知らなかった人いる?

January 05, 2005

デザイン変えてみた 08:09

なんか手作り感が多少抜けたでしょ。と言っても 努力もこだわりも足りなさ過ぎだけど。まあ表示がおかしかったら教えて下さいよ。

あとはBBSをblogに統合したいね。まー誰も書かんし、やる気もないけどね。 見栄えが悪いわな……。あそこまだ「わいさいと」だしなぁ。

January 07, 2005

BBS統合完了、と 14:06

レポートから逃げる形で、ブログへのBBSの統合作業をやってた。 つっても今まであったコメント機能が独立しただけなんだけど。 ほとんどが前からあるBBSの流用なので 互いのインターフェースを合わせる程度の修正で済むと思ったらそうでもなかった。 はぁ。

あとはあれだなぁ、現状では書き込みがあると「最近のコメント」に リンクが追加されるわけだが、 これをRSSでも吐くようにしたら書き込みを捕捉しやすくなるな。 でも、やらね。めったに書き込まれないしな。

January 08, 2005

SEP3エミュをサーバに置いてみた 04:29

JavaのVirtual Machineが容量オーバーでノーパソに入らないって言われたので、 SEP3エミュレータ をサーバに置いてみた。→SEP3 Emulator on Web消しました。

サーバ側でSep3emu.jarを実行して出力を返してるだけなんで 性能的には変わらないが、その仕組み上途中で入力ができないので、 トグルスイッチから入力って命令は動きません。 正確には0xFFE0をメモリマップトIOとして扱わない。 まーお試し程度には十分だら。

あー、ホントそろそろレポートやらんと……。

January 11, 2005

レポート終わった〜 07:08

きつかった。2冊読んで読書感想文1600文字*4枚以内はきつかった。 本買ってきたのが日曜のバイトのあとっていうのがまずかった。 実際書いたのは3600文字くらい。なんとか4枚目の上の方にさしかかったので終了。 空白ばっかさ……。

つーか、こんな時間にプリンタのクリーニングやら印刷やらガリガリやって 隣と下に迷惑をかけて早1時間(隣は起きてるし……)、 なのに印刷がかすれて直らない。

ヽ(`Д´)ノ ウワァァン!! もうダメだ、このプリンタ。 使ってなかったのが悪いんだが、もうむかついた。

EPSON一筋 丸6年〜♪ 遅いの しょぼいの うるさいの〜♪

まぁよくもったもんだ……。

January 18, 2005

SourceForgeのソフトのアップグレード情報をRSSで取得 09:00

SourceForge.netのRSSはなんかわかりにくいところにある。

SourceForge RSS
プロジェクトのトップページ。そこからリンク先に飛ばないといけない。

January 21, 2005

SEP3エミュのバグフィックス 23:13

SEP3エミュレータバグがあったので、直しました。 →Sep3emu.jar ver.0.1.1

バグは相対ジャンプ系命令(RJP, RJS, RBx)について、R7 + F → R7の動作をしたときに、 演算結果が16bitを越えて17bitになった場合もうっかり17bit分そのままR7に格納していた。 そのためR7がメモリの範囲(0x0000〜0xFFFF)を越えて異常な動作を起こしていた。

まあこんなこともありながら、今日の実験で初めて本格的にエミュレータを使ってみたわけだが、 SEP3ボード使ってデバッグしていくなら、実機使うよりやっぱ早いわ。 データが意図したとおりに変数から変数・関数へ渡っているかってのは、 結局SEP3上で動かさないとわからんわけで。 俺みたいに変数のところでおかしくなってる場合のデバッグにはいいんじゃないかと。

SEP3エミュでのデバッグには、命令ステップで動かしつつLEDへの出力関数を使うとなかなか良い。 Cとかでよくやるprintfでのデバッグを、この出力関数でやるわけ。

SEP3エミュの命令ステップモードは次のような出力をするので……

ADDR: 0x200  MOV IP7:D0 done ←0x200の命令MOVを実行

R0 :3	(16)
R1 :0	(16)
R2 :0	(16)
R3 :0	(16)
R4 :0	(16)                         ←そのあとのレジスタとLEDの状態
R5 :0	(2)                                 (16)は16進数の意味
R6 :10	(16)
R7 :202	(16)
LED:0	(16)

ADDR: 0x202  RJS IP7:IP6 done  ←0x202の命令RJSを実行

R0 :3	(16)
R1 :0	(16)
R2 :0	(16)
R3 :0	(16)                        ←そのあとのレジスタとLEDの状態
R4 :0	(16)
R5 :0	(2)
R6 :11	(16)
R7 :100	(16)
LED:0	(16)

     ・
     ・
     ・

変数の値を確認したい箇所でLEDに出力してやれば、それがあとでこうやって見れるってこんです。 このデバッグ法を実機でやるには、ちょっとつらい。

LED出力関数の引数は整数型だけじゃなくてポインタも出力できるようにしておくと、 ポインタがしっかり変数を指しているか確認できる。

January 22, 2005

SEP3エミュでダンプ 13:08

SEP3エミュはダンプを表示しなかったもんで、昨日の実験はちょっとやりにくかった。 LED出力で確認する方法は、その出力だけを見る分にはわかりやすくて良いんだけど、 その分余計なコードが増えて全体的には見にくい。

まあseptsでさえダンプ表示機能はあったんだよな。 てことで、ダンプ表示するようにした。→SEP3 emulator ver.0.2.0

表示と言ってもダンプを出力すると命令ステップモードでどうしても見にくくなってくるので、 悩んだ結果、引数で指定した番地からSPまでを表示するようにした。 引数にはスタックの開始番地を指定する。 これはつまり、スタックに積まれている分だけダンプ表示するという使い方になる。 たぶんダンプしたくなるのは動的に確保されるこの部分だと思うので。

ダンプ表示+命令ステップの出力例。

java -jar Sep3emu.jar b input.bin 200 1000 

ADDR: 0x200  MOV IP7:D6 done

        R0 :0   (16)
        R1 :0   (16)
        R2 :0   (16)
        R3 :0   (16)
        R4 :0   (16)
        R5 :0   (2)
        R6 :1002        (16)
        R7 :202 (16)
        LED:0   (16)

        Memory Dump(1000〜R6)
        1000: 0
        1001: 0
        1002: 0

ADDR: 0x202  MOV D1:IP6 done

        R0 :0   (16)
        R1 :0   (16)
        R2 :0   (16)
        R3 :0   (16)
        R4 :0   (16)
        R5 :100 (2)
        R6 :1003        (16)
        R7 :203 (16)
        LED:0   (16)

        Memory Dump(1000〜R6)
        1000: 0
        1001: 0
        1002: 0
        1003: 0

       ・
       ・
       ・

使い方はこんな感じになる。 (ダンプ以外の詳しい使い方は「SEP3エミュを作ってみた」を参照)

java -jar Sep3emu.jar  走行モード  入力ファイル  実行開始番地(16進数)  ダンプ開始番地(16進数)

もちろん、ダンプを表示しない今までどおりの使い方もおk。

java -jar Sep3emu.jar  走行モード  入力ファイル  実行開始番地(16進数)

ちなみに次のようにすると、使い方を表示する。

java -jar Sep3emu.jar

実験の指導書どおり作っているなら、グローバル変数が0x1000番地以降に確保され、 その後ろにローカル変数やサブルーチンからの戻り番地が SPを動かして動的に確保されていくようになっているはず。 だから基本的には次のような使い方になる。

java -jar Sep3emu.jar b input.bin 200 1000

これで、0x1000番地から確保されたグローバル変数と、戻り番地、ローカル変数の 表示が可能になる。

出力が長くて上の方が切れちゃいますか? パイプ使って下さい。

java -jar Sep3emu.jar b input.bin 200 1000 | less

で、デバックをぱっぱと実行するために、コンパイル・アセンブル・エミュレート一発コマンド を、以下の様に変更するとウマー(゜д゜)

#!/bin/bash

#使い方
#
# sep mode inputfile startAddr (dumpAddr)
#
# inputfile ... C言語もどきのソースファイル
# mode ... a or b   走行モード a:通常走行 b:命令ステップ
# startAddr ... プログラム実行開始番地(16進数で)
# dumpAddr ... (省略可) この番地からSPまでをダンプする

#コンパイラのパス
comp='/home/cs20xx/SW_jikken/SW-II/come'

#アセンブラのパス
asm='/home/cs20xx/SW_jikken/SW-I/asm'

#エミュレータのパス
emu='/home/cs20xx/SW_jikken/Sep3emu.jar'

if [ $# = 3 ]; then

        $comp $2 > temp.s && $asm temp.s && java -jar $emu $1 temp.bin $3

elif [ $# = 4 ]; then

        $comp $2 > temp.s && $asm temp.s && java -jar $emu $1 temp.bin $3 $4

else
        echo 'Usage: sep mode inputfile startAddr (dumpStartAddr)'
fi

このスクリプトの使い方は

sep  走行モード   Cもどき言語のファイル   プログラム開始番地

または

sep  走行モード   Cもどき言語のファイル   プログラム開始番地    ダンプ開始番地

January 26, 2005

クイックソートが動いた(;つД`) 01:10

ソフトウェア実験ですが、ついに動いたよー、配列のクイックソート。 といってもエミュレータ上で、だけど。 まだまだおかしいところあるんだろうなあ。 まあたぶんこれで金曜にチェック通りそうなのでよかった。

おかしかったのはローカル変数へのアクセスだった。 SPからの相対的な位置はいろんな場面で変わってくるが、 その計算ができてなかった。 いろいろ変わるからね、いろいろ……。

January 27, 2005

gDesklets入れたけど 17:47

わけあって喜べない。それはあとで言うとして、とりあえず今までさんざん てこずってきたインストールまでを覚えてる限りでメモっておこう。

(追記 2005/4/3:Vineの場合Seedに移行するともっと簡単

コツは、Requirementsをクリアするなら必ずしも最新版でなくてもいいっていう 当たり前なことを頭に置いといてVineSeed を探すっていうこと。これでgDeskletsのmakeまではいくと思う。 俺はソース拾ってきてカリカリやってて、あとで気づいて自分はアホだと思った。 VineSeedを忘れるとは!

で、多分gDeskletsのmake installのところでエラーになるが、AOISAKURAってとこに対処法が 書いてあるのでそれでいける。

gDeskletsはgdesklets startでデーモンを起動し、拾ってきたアプレットみたいのは、 gdesklets shellでGUIの設定画面が出るのでそこから追加、起動ができる。 このgdesklets shellが起動時にエラーで落ちたので、gnome-python-*をVineSeedからもらってきて 片っ端から入れたら起動した。

なんかよくわからんが、アプレットはDisplay,Sensor, Controlというのに分類されている感じで、 Displayがフロントエンド、Sensorがコンポーネントみたいな感じ。そのため、例えば DisplayをインストールしてもSensorがないと動かないという依存関係がここにも存在する。 しかもgDeskletsのページって検索できないから、探せなくないか?('A`)マンドクセ

嫌になるのは使い方もREADMEに載ってるだけで情報が少ないことだよ。 ホント誰かまとめてくれ……。

あと、俺だけなのかも知れんが、Display(モニタのことじゃない)の上で右クリックして 「ディスプレイの設定」をやっても、うんともすんとも言わない。なんでだ〜 ヽ(`Д´)ノ

関係ないけど、Firefoxの「ブックマークへ追加」も、タブが2つ以上開いていると うんともすんとも言わなくなっちまった。こんなんばっかだ今日。