- 1 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:02 ]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 9 pc8.2ch.net/test/read.cgi/tech/1135082582/ 10 pc8.2ch.net/test/read.cgi/tech/1146844753/ 11 pc11.2ch.net/test/read.cgi/tech/1160879890/ 12 pc11.2ch.net/test/read.cgi/tech/1188688416/ 関連リンクは多分 >>2-10 あたり
- 159 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 16:38:45 ]
- 上のほうですでに出てたかw
- 160 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:15:05 ]
- むしろ、ドラゴンブックは、それさえ読めれば、相当なコンパイラが書ける本だろ。
確かLSI-Cの作者がそう言ってたと中村正三郎か誰かが書いていた記憶がある。
- 161 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:27:01 ]
- コンパイラを書けるくらいの人なら読める
- 162 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:45:10 ]
- >>160
「ドラゴンブックを読めば誰でもLSI-Cぐらいのコンパイラは書ける」だなw
- 163 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:39:56 ]
- LSI-Cのひとはyacc互換のコンパイラコンパイラも作っていましたよね。
「ドラゴンブック読めば誰でもコンパイラコンパイラは書ける」なの?
- 164 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:57:12 ]
- スクリプトエンジンプログラミング 買ってきた。半分くらい読んだとこ。
なんか書いてみたいなレベルの自分にとっては、ぴったりのイメージ なんだが、この本あんまり話題に上らないね・・・ C++出来ない自分にゃ読み替えるのが大変w javaVM向けの中間言語を吐くやつのサンプルとかがあると、最高 だったんだけど。
- 165 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 20:40:34 ]
- >>162
LSI-Cは1980年代始めから中頃までが全盛期だと思うが、 当時最高の最適化を行なう最強コンパイラですよ。 作者はデータフロー解析、レジスタカラーリングは、 原論文をバリバリ読んでいた人だと思う。 かなりの腕前の人。
- 166 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 21:33:02 ]
- >>165
いやいや、>>162は作者がそう言ったので 中村正三郎か誰かがしょんぼり、という話w
- 167 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 22:14:46 ]
- >>164
ちょっと薄い本だけど、日立の人が書いた、Javaのバイトコード を吐くコンパイラがサンプルで載ってる本あったね。 って調べたらあった↓ www.amazon.co.jp/dp/4274133087/
- 168 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:13:16 ]
- >>167
著者の最初に名前上がってる人、コボラーだね。
- 169 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:15:27 ]
- まじかよw
興味あったけど買うのよしたw
- 170 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:19:24 ]
- 作者じゃないが。最近発売された「プログラミング言語を作る 」がインタープリタ
もバイトコードコンパイラのソースも載ってるぞ。買って読んでないから内容は 知らんが。
- 171 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:20:09 ]
- MiniCamlで良いじゃん。
- 172 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:34:54 ]
- スレ住人に聞くけどJIT関係の最適化に関するプロファイリングネタはここでいいのかな?
- 173 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 04:30:55 ]
- さっきJavaで書かれた独自形式の中間言語を出力する
コンパイラが欲しいと書いてる人がいたが、 よくよく考えてみると、.NETやJavaなどのそれ自体が 中間言語でかかれててJITコンパイラまで付いてる環境では、 下手に独自で作るよりもその環境の中間言語を出力してしまう、 要するにコンパイラそのものを作ってしまったほうが簡単なんだよな。 中間言語の書式や(基本的に)仮想マシンの仕様を考えなくて済む。 だからJavaにおけるGroovy、.NETにおけるIronPythonなど、 中身はインタプリタというよりもコンパイラそのものだ。
- 174 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:51:31 ]
- そこでLLVMやCOINSが出てくるわけだ。
- 175 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 07:32:42 ]
- プログラミング言語を作るは神本
ドラゴンブック不要といわれる理由がよくわかる 読んでみろ
- 176 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 07:41:40 ]
- はい。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 08:03:25 ]
- はいじゃないが。
- 178 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 10:29:52 ]
- >>170,175
信者か作者かしらんがいい加減うざい
- 179 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 11:43:34 ]
- そう思わせるのが目的のアンチかもよ
- 180 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:29:32 ]
- プログラミング言語を作る
買って読んでみたぞ 普通の本だろこれ 金返せよ
- 181 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 22:40:43 ]
- え?俺の本からは神様が出てきたぞ?正に神本だと思ったw
- 182 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:16:58 ]
- >>181
作者乙
- 183 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:20:30 ]
- 間違えた、紙だったw
>>182 偽エスパー乙
- 184 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 23:25:07 ]
- 無理に面白いこと言おうとしなくてもいいよ
- 185 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 07:31:29 ]
- ドラゴンブック持ってないのに
コンパイラの本書いてるやついるけど あいつは何なの?
- 186 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 07:35:37 ]
- 分かりません。
- 187 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 14:13:43 ]
- >>169
いや、コボラーはコボラーでもIBMの奴隷って意味のコボラーじゃないからw
- 188 名前:デフォルトの名無しさん [2009/06/27(土) 23:40:48 ]
- >>160
確か、LSI-Cの作者がそれしか読んでないとかいってただけだと思う。 万人に当てはまるわけではない と
- 189 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 00:30:24 ]
- 大昔の話じゃいろいろ説明をつけないと通じないんだなあ……
というかその大昔の時点で意味わかってなかったのか? LSI-Cの最適化は凄いとよく言われたが 詰めが甘くて実際には骨折り損だという話もあったよ コンパイル時間はMS-Cの倍だったしね
- 190 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 01:40:22 ]
- >>189
8080版の最適化の話だろすごかったの
- 191 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 07:18:31 ]
- LSI-C(笑)
- 192 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 07:19:14 ]
- 4004(笑)
- 193 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 09:20:58 ]
- >>189
知りもしないことをよくもまあ
- 194 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 11:56:45 ]
- 知ってる人だけ。。。
MSX-Cは変数が自動でレジスタに割り当てられるんだけど、 そうなるとポインタを介したアクセスと一貫性がなくなる。
- 195 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 12:01:02 ]
- MSX-C = LSI-C
- 196 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:23:22 ]
- >>194
変数のポインタを取り出せばメモリ上に確保しなおしてたよ それともループ内に持ち込んだ変数を割り込み処理で外部から変更した時に関与が出ないって意味で言ってる?
- 197 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:59:34 ]
- #include <stdio.h>
#pragma nonrec main() { int n; int *p; p = &n; n = 10; *p = 100; printf("n = %d\n", n); } MSX-C のマニュアルに載ってたサンプル。 これで「n = 10」と表示されるそうな。
- 198 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:10:50 ]
- なんじゃこりゃ。
これが仕様なの?
- 199 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:30:24 ]
- 往年の8ビットマイコン用Cコンパイラの#pragmaか
コード書く人もコンパイラの振る舞いにあわせて組んでたんだね
- 200 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:40:43 ]
- 逆だろ。
pragmaはコンパイルの動作を指定するためにある。
- 201 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 00:14:16 ]
- MSX-CでC言語を勉強したんだけど、これによくはまった。
レジスタに割り当てないこともできるけど。 #pragma nonrecはローカル変数をstaticがついているかのようにする。 non-recursiveの略。CPUの制限でスタック上の変数にアクセスするのが 遅いからです。コードの再利用のことを考えてのことだと思う。 あとMSX-Cはlongと浮動小数点数がないんです。 #ifもない。if文で代用とマニュアルにありました。実行されないコードは 生成されない。 なにかの役に立つかな?
- 202 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 00:17:14 ]
- #pragma有効で組むか
さもなくば死か この時代にCを開発用途に使えたという時点である意味幸運だったとも言える
- 203 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 12:13:13 ]
- 8080でのスタックフレームってめんどくさいよな
- 204 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 23:59:31 ]
- 高級言語を意識して設計されてないから仕方ない
Z80だとIX/IYで強引にやるのか?汎用/裏レジスタで最適化とかしてたら凄いが
- 205 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 00:51:28 ]
- IX/IYは人間向きのレジスタで、
便利ではあるけど遅いからコンパイラは使わない。 (HD64180あたりになると結構速かったが) LSI-C(MSX-C)はもちろん裏レジスタ使いまくり。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 22:30:31 ]
- むかし見たLSI-C80の広告ではIXかIYをフレームポインタに使っていた
コードが掲載されていた。 MSX-Cは裏レジスタ,IX,IYを使うコードは生成しなかったと思う。 付属のライブラリでは使っているかもしれませんが。 スタック上のローカル変数アクセスの方法はどうだったか記憶にありません。 MSX-Cのアセンブリ言語出力をZ80に最適化するプログラムを書いた人もいるようです。 僕も出力を見ていたときすこし考えたことありました。 アセンブリ言語レベルで8080から8086に変換するプログラムの存在を古い本で読んだのも思い出しました。
- 207 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:41:00 ]
- コンパイラが将来性のない
回顧主義者おっさんのたまり場であることがよくわかる だから日本は研究でも実業でもこの分野でチョン以下になる。
- 208 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 23:51:29 ]
- >>207
そんな愚にも付かないことを言ってるヒマがあったら、 LLVM向けに何かメジャーな言語を移植するのだ。
- 209 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:01:25 ]
- LLVMは糞だろ
- 210 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:22:10 ]
- >>209
どこがどう糞なの?
- 211 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:55:53 ]
- >>210
Milepost GCCがあるから不要 自分でコードをチューニングするという古臭い時代は終わったの 自動的に学習して最適なコードを出力してくれるからLLVM自体不要なの
- 212 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:01:16 ]
- 幼稚園児かw
- 213 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:15:27 ]
- >>211
というか、同じようなアイデアのllvm-gccのほうが有名なわけだが?
- 214 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:20:21 ]
- >>211
完全自動化だし、今年後半のコンパイラ関係の 賞総なめにするって言われてるけどねぇ EUレベルの国家プロジェクトと田舎大学の糞プロジェクト 比較されてもねぇ
- 215 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:23:40 ]
- 幼稚園児だな
- 216 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 07:15:50 ]
- ヒント:実績
- 217 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 17:26:47 ]
- Milepost GCCのICIな人たちが次はLLVMでやってみるって言ってんですがねえ…
- 218 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:29:02 ]
- 基地外は相手にするなよ
- 219 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 21:43:00 ]
- >>217
妄想乙
- 220 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 00:33:17 ]
- >>219
君がろくに論文も読んでないのが良く分かりました。
- 221 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 14:42:00 ]
- このスレふつうのコンパイラをつくろうを
宣伝したやつフルボッコにするからな
- 222 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:27:47 ]
- まず>>221が・・・
- 223 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:45:49 ]
- >>221
>>221 >>221
- 224 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 15:59:24 ]
- >>221
>>221 >>221 >>221 >>221 >>221
- 225 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 19:14:05 ]
- 著者の関係者なのか?
- 226 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 22:26:25 ]
- 8080でLLVM実装まだ?
- 227 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 17:28:44 ]
- ゼッパチでよければ
- 228 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 16:05:46 ]
- x86用のコードを吐くCコンパイラの、64bit整数(long long)まわりを読んでいます。
addl $1,%eax adcl $0,%eax みたいな簡単なものは理解できたのですが、シフト演算や乗算・除算になると 追い方が悪いのか理解力が弱いのかさえ分からなくなってきました。 この手のことを解説したサイトって無いのでしょうか。
- 229 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 17:55:56 ]
- >>228
たぶん自分で調べたほうが早い。 最適化をかけないデバッグビルドで、 演算させるたびに何か関数(printf)でも呼び出す形にするといいよ。
- 230 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:16:51 ]
- デバッガ知らないの?gdb?
- 231 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:21:05 ]
- 前提知識であるx86のアセンブリの知識はあるの?
- 232 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 01:09:36 ]
- $(GCC)/gcc/longlong.h
まじお勧め
- 233 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 06:52:57 ]
- >>229
そうですか。急がば回れってことなんでしょうか。 おれ、このリーディングが終わったらまとめ書くんだ。 >>230 acid 使い方が分からないので、スタックトレースにしか使ってません。 >>231 数年前に、はじめて読む8086を流し読みした程度の知識です。 分からない命令はインテルのpdf引きながら読んでいます。 >>232 www.opensource.apple.com/source/gcc/gcc-937.2/gcc/longlong.h mullを1回で、(long)*(long)はできるのですね。おもしろい。
- 234 名前:デフォルトの名無しさん [2009/07/08(水) 09:10:38 ]
- >>230
gcc使う人はたいていデバッガ使わないでしょ。 デバッガに頼り切ってるのはVS厨が多い。
- 235 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:36:37 ]
- > gcc使う人はたいていデバッガ使わないでしょ。
そういう人って デバッグがデバッガに頼り切りではないという面もあるにしろ デバッガを使いこなせてないという面もあるんじゃないかな。
- 236 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:59:40 ]
- >>234
それは偏見。 組み込みLinux開発ではgdbくらい使いこなせないとお話になりません。
- 237 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:28:59 ]
- >>236
それは偏見。 組み込みLinux開発ではgdb使ってるようではお話になりません。
- 238 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:31:41 ]
- gdbは使いこなせるけど使ってないケースもあるわけで
- 239 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:35:33 ]
- printfの方が高機能なわけで
- 240 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 17:56:46 ]
- Caper良さそうなのですが字句解析(Lexar)には
何を使うのがいいでしょうか? おすすめを教えてください。
- 241 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:34:20 ]
- Caper良さそうなのですが字句解析(Lexar)には
何を使うのがいいでしょうか? おすすめを教えてください。
- 242 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 18:53:24 ]
- 手書きでOK
- 243 名前:デフォルトの名無しさん [2009/07/08(水) 19:48:27 ]
- 手書きでいいと思う
文字列→数値のパースみたいなランタイムの処理に流用しやすいし
- 244 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:21:38 ]
- 本気で速度気にするならflex出力を手修正とかがいいんじゃないか
- 245 名前:デフォルトの名無しさん [2009/07/09(木) 01:22:53 ]
- アセンブリから機械語にどうやって変換しているんですか?
- 246 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 01:54:23 ]
- まずOPコードを暗記するんだ
相対アドレスも数をこなせば暗算できるようになる
- 247 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 09:40:02 ]
- >>245
アセンブラを使う。 gccに-vオプションつけてみな。
- 248 名前:デフォルトの名無しさん [2009/07/09(木) 09:50:38 ]
- >>241
Caperはgcc+Perlで開発されているので字句解析にはPerlを使うと馴染みやすい。 Linuxには必要なものがすべて揃っている。
- 249 名前:デフォルトの名無しさん [2009/07/09(木) 10:10:50 ]
- >>247
あなたの作っているコンパイラに対してアセンブラは自前ですか?
- 250 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:16:58 ]
- 母国語でおk
- 251 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 16:11:15 ]
- アセンブラどころかリンカもローダも自作したが
最初は使えるものを使って、徐々に置き換えていけばいいんじゃない
- 252 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 23:01:50 ]
- Richard Bornatのコンパイラの本でお勧めですか?
- 253 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 23:26:02 ]
- 日本語でおk
- 254 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:58:11 ]
- やさしいコンパイラ(デコイ本)はやめたほうがいい
ふつうの方は神本確定の出来だった
- 255 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 00:56:59 ]
- やさしいコンパイラ貶して
ふつうの方宣伝してる人は まったく具体的な指摘がないんだよな
- 256 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 01:09:34 ]
- と、ここぞとばかりに架空の傾向を持ち出すわけですね。
- 257 名前:デフォルトの名無しさん [2009/07/25(土) 09:32:51 ]
- ふつうのコンパイラ良書なんでしょうか
学生なのでちょっと資金余裕がなくて
- 258 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 09:38:48 ]
- 研究室で買ってもらえばいい。あるいは図書館。
- 259 名前:デフォルトの名無しさん [2009/07/26(日) 02:01:07 ]
- mingw-jpの使い方まったくわからないので
どなたか教えてもらいたいのですが
|

|