2011-01-01から1年間の記事一覧

レジスタ割り付けをしたい(1)データフローを作る

Scalaでx86_64コンパイラを作っているわけですが、現状のコンパイラはスタックに変数のメモリを割り当てて、 変数はメモリから取り出して計算してまたメモリに入れるという計算をしています。 通常のコンパイラでは出来るだけメモリアクセスは無くしてレジス…

Liveness Analysis

タイガーブックを読んで、JavaScriptで生存解析いうのがあって、書いてみました。 で、Liveness Analisisっていう用語があったので、ググったら非常に奇麗にScalaで書いた実装が見つかりました。http://d.hatena.ne.jp/matt-k/20080530おお、こんなに簡単に…

Scalaのソースを読んでいて辞めてほしいと思った12の機能

えーっと、 https://github.com/joshcough/Compilers このへんのソースを地道に呼んでいる訳ですが、正直、Scalaの機能をふんだんに使っていて、 やめてくれー!っと思っております。俺は、Scalaマニアじゃないんだ!コンパイラの仕組みを知りたいんだー!な…

放射性物質は通さない膜

原子力発電所をすっぽり被える酸素や水素は通すけど、セシウム等は通さない膜が作れたら、煙は周りに撒き散らさなくてすむように出来るんじゃないかなと思いました水素爆発で大量の気体が一気に出来て建物が壊れて煙が漏れたのがいけなかったのだから、柔ら…

第二回Scala会議の資料

第二回Scala会議お疲れさまでした。 ライトニングトークをしたときの資料です。 http://hsk.github.com/x86_64/x86_64.pdfアセンブラを学びながらScalaで作るコンパイラバックエンド入門 http://hsk.github.com/x86_64/URLを変えただけです。やる気と環境が…

minimal インストール

ネットにつなげるのに手間取ったのでメモVirtual Box メニュー>VirtualBox>環境設定>ネットワークからホストオンリーネットワークを追加アダプタ 1:Intel PRO/1000 MT Desktop (ホストオンリー アダプタ, 'vboxnet0') アダプタ 2:PCnet-FAST III (NAT)/etc/s…

また、セミコロンについて悩む

だいたい、資料作りが終わった。というか飽きたので、次の段階でJavaScript級の文法をちゃんと考えるかぁっと思って、 下降型の演算子順位法でJavaScriptにある演算子と文を出来るだけいい感じにパース出来る用にしようと思ったのですが、 あれ、セミコロン…

第二回Scala会議(12/10(土)) のお知らせ

12/10にScala会議が恵比寿のRed hatであるのですが、ライトニングトーク枠が空いていたので申し込んで滑り込みました。(w ということで、x86_64コンパイラをScalaで作る話を5分でしてこようと思います。前、Scala勉強会で話したときにもっとこうした方がよか…

パーティショニングメモ

パーティションニング付きテーブル作成 CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE) ENGINE=INNODB PARTITION BY HASH( MONTH(tr_date) ) PARTITIONS 6; パーティション削除 ALTER TABLE `ti` REMOVE PARTITIONING; パーティション追加 AL…

アセンブラを学びながらScalaで作るコンパイラバックエンド入門(未完成)

http://hsk.github.com/timi/ソースコード http://github.com/hsk/timi/アセンブラを学びながらScalaで作るコンパイラバックエンド入門(未完成) を書いていた物を公開しました。未完成ですいませんが、徐々にバージョンアップしていく予定ですのでよろしくお…

The AST Typing Problem

型付きの抽象構文木ってどうやったらうまく出来るのかという事を考えてまして、こんな記事がありました。http://lambda-the-ultimate.org/node/4170Scalaだと、traitとかを使ったらうまく出来るのかなぁ?って思っているのですがどうするのがうまく行くのか…

こういうのが欲しい

値を1〜nまでの整数からランダムに抽出する関数で、シードと何番目を渡すとそれなりの値がかえってくる高速な関数。 nが2の乗数で、線形合同法 (linear congruential method)を使って、ぐりぐりループすれば出来るんだけど、もっと高速にできないのかなぁっ…

Dart

ライブラリ作り、面白そうだなと。 http://d.hatena.ne.jp/RiSK/20111113

言語のツイッター

@jp_delve さんが面白いなぁっと思いました。 Xtendっていう言語があるらしい。 @kmizuさんが来年の4月くらいまでに言語を作っているらしいし楽しみ。 とにかく、一刻も早く、ネット環境をなんとかしないと、不便だわ、悔しいは、迷惑だわで大変です。

きしださんがScalaで言語を作っています。

http://d.hatena.ne.jp/nowokay/いいかんじに、普通にパーサコンビネータを使って言語処理系を書いてます。 俺の言語と違って安心して見れます。俺の言語は何が不安かって、木への文法を書いてるんだけど、それを もう一度抽象構文木に落とすところが、なん…

TPPとか

金曜日に休んだので、なんとなく国会中継を見てました。 自民党、凄いなと思いました。 民主は大丈夫なのか?って思ったりもしたのですけど、いろいろあって ああいう対応になっているのだろうなぁと思いました。

Scala勉強会イン渋谷にいく

で、発表してきました 話を聞いて貰えてよかったです。ありがとうございました資料はきちんとした形で、出来るだけ早めに公開したいと思いますが、イー・モバイルが繋がらないので復活するまではアップしません。本人のやる気次第ですが、最近やる気ないので…

環境 Environment

かんきょう【環境】 environment; surroundings (▼environmentは個人の感情情操人格などに与える影響を強調する); 〔自然環境〕the environment (⇒コラム)いろいろと環境が変わりました。夏から秋へ。 働く場所の移動。 windows から mac に変わりました。 p…

政治とか

なんか、ちょっとブラックジョーク言っただけで、大臣変えさせるマスコミにむっとするのだった。 お前らは、そんなに偉いのか?っと。国民が主権者なのです。主権者が選んだ国会議員なのです。 その長が首相なのです。で、ブラックジョーク言うと、おろすっ…

コンパイラ入門

上からなめて、細かい修正をして、うーん。変な文章だなぁっと思ってます。 あと、バグがあるから、バグは潰さないとなぁ、テストしないとなぁ、ぐふっ っていうところで、バグがあったほうがいいのかもしれないけど、ないほうがいいかもしれず うーんっと悩…

解析

とりあえず、いい加減パーサがパースをして、それっぽいphpははくようになった。 でも、ほとんど全部、式として扱っているので、セミコロンをちゃんと付けたいとか、 変数をちゃんと扱いたいとか、細かい部分の変換がうまく行かないので、文と式くらいは 分…

うぉーアニメーション力を付けなくては

って思って今週末はいろいろ作ってました。

社内のDev会で発表しました

ちょっと前に、時間貰ったので、今作ってるコンパイラの話をしました。最近はふと、flashのパーサの仕様を記述しておいて、パーサ自動生成だーっと思って、作りはじめて、優先順位地獄にはまって大変です。 普通のパーサのほうが楽なんじゃないかと思い始め…

AST2ST

抽象構文木から構文木への変換プログラムです。 手抜きはありますが、いちお、変換出来マッス。 object st2ast { def main(argv:Array[String]) { val st = ( ("main","=",("fun","(","void",")",( ("a","=",("add","(",((1,",",2),",",3),")")), "@", ("pri…

変換イメージ

コンパイラを作る上で大切なのがどんなデータがどう変換されていくかというイメージです。 それがはっきりしていればずっと、作るのが楽なはず。 そして、それだけを書き出してみるのはいい練習になると思います。 ということで、書いてみました。ソースコー…

パーサを書きなれよう

コンパイラのバックエンドを作っていて、あとはフロントエンドをくっつければ完成なわけですが、 フロントエンドも1からささっと作りたいけど、疲れて作れないのは悔しい。 ということで、1からささっとパーサを作る練習をしております。scalaで、clean bo…

関数ができたぞと

とりあえず、今週末は関数コールのコンパイルを作りました。 1から作るのは初めてなので、偉い、リファクタリングが必要だぁ。構造が変わるぅ。分けわかんねぇ。 あっちもこっちも直さないといけねぇ。っと、いろいろ大変でした。 でもまぁ、出来ました。 …

関数の定義だけ考える

昨日は、なんだか悩んでしまってたのですが、 関数には関数の呼び出し部分と、関数定義の2つがあって、当たり前なんですけど、 昨日はごっちゃになっていたので今日は関数定義の方だけ考えることにしました。 ということで、もう一度最初から int a(int a,i…

関数コール

Macでの関数の呼び出しについて調べないと、関数が実装出来ません。 ということで、関数コールについて調べてみます。 void a(int a,int b, int c,int d, int e, int f, int g, int h,int i, int j) { printf("%d\n", a+b+c+d+e+f+g+h+i+j); } void ac() { a…

やっぱり、独自路線を行くことに

今、必要なのは、関数型言語で書いた、とっても簡単なネイティブコンパイラ入門なのです。 なので、特にレジスタ割り付けは必要なくて、メモリに割り付けてしまうのがいいんです。 でもって、プログラムはリストになっていて、そのリストをコンパイルするだ…