[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 10/19 19:42 / Filesize : 260 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

「コンパイラ・スクリプトエンジン」相談室13



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 あたり

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の使い方まったくわからないので
どなたか教えてもらいたいのですが

260 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:17:33 ]
言語ワークベンチは究極的には完全にプログラミング方法を変えるかもしれない
www.infoq.com/jp/news/2009/05/Language-Workbench

261 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:40:02 ]
>>260 なんかスタイルシートが効いてなくて生々しいレイアウトになってない?

262 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 17:57:19 ]
>>261
今見たが、特に問題ないぞ。

263 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 11:25:26 ]
>>261
うちの環境だとこうなってる
IE6 ちゃんと出る
FireFox スタイルシートが効かない
Google Chrome スタイルシートが効かない上に画像も表示されない

264 名前:263 mailto:sage [2009/07/27(月) 11:30:13 ]
今見たら直ってました。

265 名前:261 mailto:sage [2009/07/27(月) 12:19:46 ]
うーん。うちのFirefoxだと変わらずだな。
エラーコンソールになんか出てるけど、それが原因を示してるのかわからん...



266 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:05:55 ]
>>265
リロードしたらOKになったよ、うちのFX

267 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:00:29 ]
うちもFirefoxだと一度目はスタイルシート読み込まれないな
まぁスレには関係ない話題だが

268 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:39:17 ]
>>260
どっちかというと設計よりの話だね。


269 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 04:41:50 ]
.NET周りで使えるもの、という条件だが。
・Lexical analyzer and parser generator

単純だがよくできている。構文木を食わせてソースコードを吐かせるBison式。
最初これで作りかけていたが、パーサーを構築できてもそのパーサーが予定の挙動をしない場合、デバッグの方法が困難。
(テーブルに分解されてしまうため、ソースが追いかけられない)
パーサーの動作は高速と思われる。

・Irony
パース、構文木構築までをやってくれるコンパイラを動的に構築してくれる。
簡単なGUIのパーサーチェッカーが付いていて、開発がかなり楽
(すごい楽かはもっと楽なものがあるのかどうか知らないので……)
動的に構築する分lapgより遅いかもしれないが、とりあえず自分の目的にはこれで十分なので。

ただ、コンパイル済みコードを吐かすために自分用の構文木を
もう一度作り直す羽目になるのは激しくビミョー……。
(別にそのまま構文木を消化していったっていいわけだが。
 まあ少なくともテキスト形式で出力するにはあの構文木のオブジェクト構造は向いてないな)

270 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 04:55:36 ]
修正と補足。
「構文木を食わせて〜」は、「BNF定義を食わせて〜」が正しい。
lapgもIronyもどちらもEBNFではなくBNF式。(Wikipediaで調べた限りでは)
ただしどちらもパースに正規表現が使える。

lapgは非Ascii文字の正規表現パースがどうも挙動が怪しい……。
Ironyはホワイトスペースの除去以外にも非構文要素を取り除けるチャンスがあるので小回りが効くようだ。
(といったところも気に入っている)

271 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:51:44 ]
JetBrains Meta Programming System
これが最強他は全て旧世代の糞技術

272 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 14:25:38 ]
>>271
どんなものか説明してみれ

273 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 14:32:14 ]
.NET向けの旧来のスタイルのものとしてはGPPG/GPLEXが定番
GPPGはIronRubyにも使われてる

274 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:05:06 ]
ドラゴンブック買ってきたぞ!さあ読むぞ!

275 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:48:45 ]
>>273
なるほど……。
現在はMPPG/MPLEXと名前が変わってるようだけどね。

どうせいずれVisual Studioの胸を借りる(SDKを使ってオレ様IDEを作る)予定なので、
はじめからこちらで構文解析を実装しておいた方が
構文の強調、InteliSenceなどで使い回しが利くかもしれない。

結構進んでてあとはエラー周りくらいだったんだが、破棄してしまうかなぁ……。



276 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:55:06 ]
MPPG/MPLEXはまた別物だよ(MSがVisual Studio SDK用にカスタマイズしたもの?)
本家はttp://plas.fit.qut.edu.au/gppg/Default.aspxで開発継続中でドキュメントも充実してる

277 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:30:29 ]
>>276
HPみてみたら、GPPG is closely related to the “Managed Package Parser Generator” application
って書いてるね。

今仕様を決めているスクリプトは文法がPythonに似ているので
IronPythonがどうなってるか調べてみたら、こっちはパーサーを自前で書いてる……?
(ソースコード中に直接コメントでBNFが書いてある)






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef