Lua処理系コード読み(10) UpVal

lobject.h /* ** Upvalues */ typedef struct UpVal { CommonHeader; TValue *v; /* points to stack or to its own value */ union { TValue value; /* the value (when closed) */ struct { /* double linked list (when open) */ struct UpVal *prev; str…

Lua処理系コード読み(9) Proto

lobject.h /* ** Function Prototypes */ typedef struct Proto { CommonHeader; TValue *k; /* constants used by the function */ Instruction *code; struct Proto **p; /* functions defined inside the function */ int *lineinfo; /* map from opcodes…

Lua処理系コード読み(8) Closure, LClosure, CClosure

lobject.h /* ** Closures */ #define ClosureHeader \ CommonHeader; lu_byte isC; lu_byte nupvalues; GCObject *gclist; \ struct Table *env typedef struct CClosure { ClosureHeader; lua_CFunction f; TValue upvalue[1]; } CClosure; typedef struct…

Lua処理系コード読み(7) luaC_checkGC

lgc.h #define luaC_checkGC(L) { \ condhardstacktests(luaD_reallocstack(L, L->stacksize - EXTRA_STACK - 1)); \ if (G(L)->totalbytes >= G(L)->GCthreshold) \ luaC_step(L); } 総アロケート量が閾値を超えているときにGCステップの呼び出し。超えてな…

Lua処理系コード読み(6) luaM_realloc_

lmem.c /* ** generic allocation routine. */ void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t nsize) { global_State *g = G(L); lua_assert((osize == 0) == (block == NULL)); block = (*g->frealloc)(g->ud, block, osize, nsiz…

Lua処理系コード読み(4) luaV_execute

lvm.c void luaV_execute (lua_State *L, int nexeccalls) { LClosure *cl; StkId base; TValue *k; const Instruction *pc; reentry: /* entry point */ lua_assert(isLua(L->ci)); pc = L->savedpc; cl = &clvalue(L->ci->func)->l; base = L->base; k = c…

Lua処理系コード読み(4) Instruction

llimits.h /* ** type for virtual-machine instructions ** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h) */ typedef lu_int32 Instruction; Lua VM命令の型。4バイト(=32ビット)。lopcodes.hに /*==========================…

Lua処理系コード読み(3) StkId

lobject.h typedef TValue *StkId; /* index to stack elements */ Lua VMのスタック要素を示す型。実質TValueのポインタ。

ls

via http://shinh.skr.jp/m/?date=20090827#p02 何箇所かで見たけど。 ~ % ls a/ hoge lang/ mbox test.c tmp/ docs/ install_flash_player_10_linux.deb local/ samba/ texmf/ trash/リモートからしか使ってないのになんでflashプレーヤなんて入れたんだろ…

一応

2009年度上期 未踏ユース 公募結果に何か見覚えのある名前が……

Lua処理系コード読み(2) Value, TValue

Lua処理系内部における「値」は共用体Valueにint型のタグを付与した構造体TValueで表現される。int ttは各種ビット(例えばTValueが示すのがgc, p, n, bいずれの型の値であるかなどの情報)を保持する。 /* ** Union of all Lua values */ typedef union { GCO…

Lua処理系コード読み(1) lua_State

せっかくLua処理系いじったりしてるんだから適当にアウトプットしていこうかなと思った。ストーリーだてた解説ではなく、思いついたときに目についた構造体や関数、マクロの適当な解説を日記にのっける感じで。いつまで続けるか未定。 lua_Stateは「Lua処理…

2009/7/19(日)電気通信大学オープンキャンパスのお知らせ

http://www.uec.ac.jp/admission/dept/open.html 7/19(日)に高校生など電気通信大学の学部入学を考えている人向けのオープンキャンパスが開催されます。 プログラムとしては 大学紹介 【講堂】 キャンパスツアー 研究室公開 個別相談 【大学会館4階】 などが…

2009/7/9(土)に参加したイベント

SmileyHackathon#5 直前秋葉原オフ - Hatena::Diary::pi8027は、だいたい12時前後に秋葉原つく感じでいいのかなと、あまり時計とか気にしないでなんとなく行ったんですけどどうも遅刻してたようですね。すいません。 リナックスカフェについてからは自分のコ…

2009/7/9(土)に参加するイベント

SmileyHackathon#5 直前秋葉原オフ - Hatena::Diary::pi8027 SmileyHackathon#5 - Smiley Hackathon(仮) SmileyHackathonがドワンゴで開催されるのですけどドワンゴの場所わからないのでid:pi8027に連れってってもらおうと思います! SmileyHackathonの方は…

ICFPC 2009に参加してたので日記。

6/26 27:00 - 6/29 27:00の期間で開催されていたICFPC2009に一人で酒飲みながらちんたら参加していたので感想とか書いておきます。先に結論を書くと結構楽しかったんですけどScoreは0点。まだバグある提出していないもの一式。 twitterの発言あたり参考に振…

ICFPC 2009感想エントリとかリンク集

たぶんここだよね的なチーム名も併記します。間違ってたらすいません。指摘していただければ書き換えます。 チーム名 リンク shinh 2009-06-30 - 兼雑記: 一般的に、信用のおけるパーツを一つずつきちんと組んでくのは大事だなぁ shinhさんと俺じゃレベルは…

Firefox 出張ワークショップ 〜基礎から学べる拡張機能開発〜参加しました。

結果こんなにも立派な拡張機能を実装することができました! ボタンがロボットに見えて困ってしまう拡張機能です。 http://konbu.s13.xrea.com/lib/firefox/robotbutton.xpi あと拡張機能のinstall.rdfにはfirefoxのGUID書かんといけないのですけどそんなも…

Beep音を消そう

Beep音はデバイスマネージャで「非表示のデバイスを表示」にチェックを入れて「プラグアンドプレイではないドライバ」にある「Beep」を無効にすることで鳴らなくなります。

(本題)Luaのダイレクトスレッデッドコード

Lua

非常にいいかげんに実装。たいていのプログラムはセグフォで落ちる。非常に恣意的なテストプログラムを走らせる。 local i = 1 local j = 1 while i<100000000 do i = i + 1 j = j + i end print(j) % time (repeat 10 ./lua test.lua >/dev/null) 1:08.98 u…

ダイレクトスレッデッドコード復習。

VM

ひどく単純なVM #include <stdio.h> #define STACK_SIZE 30000 enum Instruction { I_PUSH, I_POP, I_DUP, I_ADD, I_SUB, I_JUMP, I_IF, I_NOT, I_EQ, I_RETURN }; typedef enum Instruction Instruction; struct Code { Instruction inst; int value; }; typedef str</stdio.h>…

bashrc設定切り分け

HOMEをNFS共有してるのでこんな感じにFreeBSD環境、Linux 64bit環境、Linux 32bit環境と切り分けてる。 if [ `uname` = "FreeBSD" ]; then source $HOME/.shell.d/bashrc.bsd elif [ `uname` = "Linux" ]; then source $HOME/.shell.d/bashrc.linux if [ `un…

未踏ユースに応募とかしてました。

書類選考は通って、2009/06/13の土曜にオーディションでプレゼンをしました。なかなか面白いイベントでした。24歳とかそのあたり以下の人とかは面白いのでどんどん応募すると良いんじゃないでしょうか。 資料とかはたぶんそのうちどっかにアップロードします…

なんかアレな CentOS 4.7 (x86_64) に RPMForge を入れて多少アレにする

「# yum list」の出力を見て愕然とせざるをえないので RPMForgeなど導入する。ただし RPMForge のパッケージは yum で陽に指定したときのみ使うことにする。 # wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.x…

「ふろぉー しいてる ひちとたの はげつんを けっりんぶじ します。」なbotを書きました。

http://twitter.com/cmriadbge_botケンブリッジ大学がどうたらこうたら - hogeなlog に書いたケンブリッジなんたらをtwitterの発言に適用してるだけです。 13分おきくらいにフォローしてる人の発言を適当にケリブッンジ化して発言します。 話しかけるとだい…

ケンブリッジ大学がどうたらこうたら

Ruby1.9と適当に1.9対応したRuby/kakasi、mecab-rubyインストールした環境にて。 #!/usr/bin/env ruby # vim: set fileencoding=utf-8: require "kakasi" require "MeCab" class Cambridge def initialize @mecab_y = MeCab::Tagger.new("-Oyomi") end def h…

sort_by{rand}はちゃんとshuffleできてるのか

できてるのか。 irb(main):001:0> ([0]*7000).map{(0..6).to_a.sort_by{rand}[0]}.inject([0]*7){|t,i|t[i]+=1;t} => [947, 977, 979, 1022, 1021, 1047, 1007] 参考 ランダムソート(笑)とは - 西尾泰和のはてなダイアリー 配列のシャッフルの決まり文句は「…

超適当にkakasi-rubyをruby1.9で使えるように

1.8向けのruby拡張を正しく1.9向けに書きなおす作法がまったくわかってないけど、とりあえず動かすだけ動かしてみました。 http://github.com/hogelog/kakasi-ruby/tree/1.9 irb(main):001:0> require "kakasi" => true irb(main):002:0> Kakasi.kakasi("-JH…

Javaの復習

しばらく先にJava演習のTAをやるのでJavaの復習をします。Javaというのはしちめんどくさい言語で、Cなら main(c){while(c=getchar())putchar(c);} で済むプログラムが import java.io.*;class C{static{int c;try{InputStream i=new BufferedInputStream(Sys…

鬱陶しいSSH総当たり攻撃をDenyHostsではじく

適当に導入して設定して再起動。 % sudo aptitude install denyhosts % sudo vim /etc/denyhosts.conf % sudo /etc/init.d/denyhosts restartdenyhosts.confにした適当な設定。特に触れてないものは書いてない。 PURGE_DENY = 5d banしたホストをどれくらい…

test