Hatena::ブログ(Diary)

hogeなlog

プロフィール

hogelog

hogelog

小室 直(こむろ すなお)。電気通信大学2003年入学。2010年修士卒業。プログラミングとかしてます。

カレンダー
1984 | 01 |
2006 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2010 | 01 | 06 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 12 |
2012 | 01 | 04 | 06 |

August 10(Thu), 2006 Schemeめも(1)

[][] まずはインストールとか

さてなんかLispでもやってみようかなと思いついた。今は主にCommon LispとSchemeが有名どころだとか。Common LispがでっかいLisp、SchemeがちっちゃいLispということらしい。じゃあちっちゃいの、ということでSchemeを学ぼう。なんかSchemeって数あるLispの中でもかなりきつい方言だとかいう話だけど。

続きを読む

トラックバック - http://d.hatena.ne.jp/hogelog/20060810

August 07(Mon), 2006

先日見っけた、是非とも色々な人に読んでほしい文章。

議論のしかた

議論好きを自称する方々は、ここに書かれてることを理解してないようならおととい来やがれ。

とか書きつつも、ここの文章読んで、自分にも当てはまる図星なこともいくつか散見。精進しよう。

俺も感情がオーバーヒートになるだの、本筋から横道に逸れるとかしょっちゅうだけど、本当にひどい人が多い。大学でゼミ形式の講義を受けたりしてて「なんだかなあ」と思うような事態はしばしば。

トラックバック - http://d.hatena.ne.jp/hogelog/20060807

August 06(Sun), 2006 C言語めも(1)

[][] バグだらけのコードを書かないようにしたい

  • とりあえずなんでもunsignedをつけてるとfor(unsigned int i=10;i>0;--i)とかやって無限ループやりがち
  • 一文字変数名は制御用の変数としてi, jとか使う程度にしてほしい。l(小文字のエル)とか使う奴は、なんの嫌がらせですかそれ。
トラックバック - http://d.hatena.ne.jp/hogelog/20060806

August 05(Sat), 2006 Firefoxめも(1)

[][] 普通のウィンドウ内でソース表示するbookmarklet

普通の右クリックからのソース表示は各種拡張とかが動かんから不便。ブックマークレットなんて書くの初めてだからぐちゃぐちゃ。

<a href="javascript:var url=location.href;location.href='view-source:'+url">ソース表示</a>

って書いたらちゃんと表示されねー。

javascript:var url=location.href;location.href='view-source:'+url"

これは実行したタブでそのままソース表示するブックマークレット。


あと、Firefoxのデフォルトのソース表示のカラーリングはなんか気持ち悪いので、404 Error - Not Foundこちら参考に変更している。

とりあえずToggle版に変更してみる。

javascript:var url=location.href;if(url.indexOf(%22view-source:%22)==0){location.href=url.substring(12);}else{location.href='view-source:'+url;}

ソース表示<->普通表示を相互切り替え。

新規ウィンドウでソース表示する版。

javascript:var url=location.href;void(window.open('view-source:'+url))

Bookmarklet - ブックマークレットを作成する際のポイントを参考に。window.open()void()で囲まないと、Windowオブジェクトを返してしまう。

でも「新しいウィンドウを開くリンクを現在のタブで開く」設定をオンにしてると、現在のタブで開いちまう。あと右クリックとかから実行したい。その辺からしてどーにかするには、拡張を書かんと無理か。

トラックバック - http://d.hatena.ne.jp/hogelog/20060805

August 04(Fri), 2006 アセンブラめも(3)

[][][] こんだけわかれば大学のMIPSのアセンブリ言語の課題程度はできねーかな

もちろん適当だ。

各種命令

データ転送系
文法 説明
lw r1, n(r2) load word。r2レジスタの数値+nが示すメモリ番地の内容を1ワードをr1レジスタに代入(ロード)するぞ。 メモリ番地の単位はバイト。
sw r1, n(r2) store word。r2レジスタの数値+nが示すメモリ番地にr1レジスタの内容を1ワードとして代入(ストア)するぞ。 メモリ番地の単位はバイト。
li r1, n load immediate value。「即値を読み込むよ」の意。即値は10とか3とかそういう直接数字による指定の値。r1レジスタにnをロード。
la r1, label load address。アドレスをロードする。labelが指すアドレスをr1レジスタにロード。
lb r1, n(r2) load byte。r2レジスタの数値+nが示すメモリ番地の内容を1バイトをr1レジスタに代入(ロード)するぞ。 メモリ番地の単位はバイト。
sb r1, n(r2) store byte。r2レジスタの数値+nが示すメモリ番地にr1レジスタの内容を1バイトとして代入(ストア)するぞ。 メモリ番地の単位はバイト。
lbu r1, n(r2) load unsigned byte。r2レジスタの数値+nが示すメモリ番地の内容1バイトを符号無しとしてr1レジスタに代入(ロード)するぞ。 メモリ番地の単位はバイト。
move r1, r2 r1レジスタにr2レジスタの内容を転送
mflo r1 move from lo。loレジスタの内容をr1レジスタに転送
mtlo r1 move to lo。r1レジスタの内容をloレジスタに転送
mfhi r1 move from hi。hiレジスタの内容をr1レジスタに転送
mthi r1 move to hi。r1レジスタの内容をhiレジスタに転送

r1とか書いてるけど本当はディスティネーションレジスタが云々とかで色々ありそうだけど、とりあえずはそんなの考えないでもプログラム書けはする。あとMIPSに実際に実装されてる命令なのかアセンブラ先生がなんとかしてくれる合成命令なんですかとか。

すごいぜアセンブラ先生、subu $8, $9subu $8, $8, $9に解釈してくれるのかよ気持ち悪い。

めっちゃ書きかけ。たぶん続きは書かない気がする。

けっこうどうでもいいことだが

「serial experiments lain」の11話冒頭に流れる文字はMIPSのアセンブリ言語じゃないかな。と言ってもMIPS以外だとx86かSPARCのをちょっと見たことある程度だからそんなに自信は無いけど。

f:id:hogelog:20060810085031p:image

そういえばlainはプレステでゲームが出てるんだった。んでプレステのCPUはMIPS。ならやっぱりMIPSで間違いなさそうかな。

トラックバック - http://d.hatena.ne.jp/hogelog/20060804

August 03(Thu), 2006 [腐れ言] このタイトル欄でカテゴリ分けしてーんだがな

[] 横溝正史とか

  • 「八つ墓村」では金田一耕助は脇役
  • 魅力的な登場人物が多い。それがポンポン死ぬもんだから怖くて実は「八つ墓村」しか読んでない。

[][] nscript.datをデコードしてみる

まったく関係無いけど「ひぐらしのなく頃に」はつまらなかった。序盤はギャルゲ的日常風景、しかもとてもつまらない。「あんなに評判なんだから、これからきっと面白いはず」と我慢。絵が変。修羅場になると眉毛がすごいことになって、これは笑わせたいのだろうかと萎える。それほど猟奇的なわけでもない。エロは無い。まあ、楽しもうと思って思えないこともないのかもしれないけど。きつい。

うっとうしいエフェクトとかをカットするためにnscript.datをデコードして色々いじったりした。


#include <stdio.h>

int main(){
	FILE *dat, *txt;
	int c;
	if((dat=fopen("nscript.dat", "rb")) == NULL)
		puts("nscript.datが開けなかった"), exit(1);
	if((txt=fopen("0.txt", "wb")) == NULL)
		puts("0.txtが開けなかった"), exit(1);
	while((c=fgetc(dat)) != EOF) fputc(c ^ 0x84, txt);
	puts("終わった");
	return 0;
}

nsdec.exe

  • nscript.datのあるディレクトリで実行すると0.txtに復号化したテキストを出力
  • NScripterはnscript.datと0.txtがあれば、0.txtを実行する

追記。眠いときに色々するともうどうしようもないミスばかりしてしまう。

ちゃんとしたの欲しい人は google:nsdec

[][] arc.nsaをデコードしようとしてみる。

nscript.datをデコードして遊んだついでにarc.nsaをデコードしようとしてみる。NScripterをダウンロードしてきて、適当にちっさいarc.nsaを作っておいてそれを展開させてみる。ディレクトリの作り方とかからして調べないとわからないレベルなので、それなりに時間がかかってしまった。めちゃくちゃ適当。ソースコードの中にマジックコードだらけでわっしょいやし、ディレクトリに格納されてたら展開できないし、あとほとんどのarc.nsaを開けないし。自分で作ったarc.nsa展開できてわー思って、「歌月十夜」のarc.nsa展開してみよ思ったらできねーし。

わかったこと
sarとかnsaはファイル名とアドレスとかサイズとかがヘッダーにごちゃごちゃあって、その後に生データが連続して存在する

とかそんな感じ

ちゃんとしたsarとかnsaを展開するソフトとしては、

google:sartool とか http://elku.at.infoseek.co.jp/ とか。

続きを読む

トラックバック - http://d.hatena.ne.jp/hogelog/20060803
最近のコメント
Connection: close