プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。
Wikiのまとめページ
http://www6.atwiki.jp/compilerandscriptengine/
「コンパイラ・スクリプトエンジン」相談室16
2014/07/20(日) 11:16:19.37ID:p6eMVAxc
167デフォルトの名無しさん
2014/12/11(木) 20:58:28.23ID:hXJaCtwW やさしいコンパイラの作り方と
コンパイラのうちとそとは
読み物として面白い。
でもたぶん(今じゃ)なんの役にも立たないw
コンパイラのうちとそとは
読み物として面白い。
でもたぶん(今じゃ)なんの役にも立たないw
168デフォルトの名無しさん
2014/12/11(木) 21:22:50.68ID:tbxqmm74 >>166
2011年が最後かな
言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで
ってのをオライリーから共著で出してたはず
でも一番読み応えあるのは1999年発行の
コンパイラの構成と最適化
だと思う、この本はドラゴンブックと一緒に是非買うべきって言っても良い
2011年が最後かな
言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで
ってのをオライリーから共著で出してたはず
でも一番読み応えあるのは1999年発行の
コンパイラの構成と最適化
だと思う、この本はドラゴンブックと一緒に是非買うべきって言っても良い
169117
2014/12/11(木) 21:35:13.25ID:TxaNdaYp >>161
>文芸的なcobol+日本語ななでしこ?
cobolやなでしこは使ったことないのでわかりませんが、
私は英語を用いた言語よりはわかりやすいと思います。
コメント文での説明が要らないかどうかは作るものによりますけど。
>あるなら手にとって読んでみればいいのに
いろんな図書館に点々としてるそうで、
中にはどこにあるのかわからない図書館にある本だったりも・・・;
ちなみに、上げた24冊のうち私の工学部の校舎にある図書館に絞ると3冊しかないそうです。
>>162 >>164
中田先生の本読んでみます。
ドラゴンブックの方も取り寄せが届いたら読みます。
>>167
面白いならその2冊も読んでみます。
>文芸的なcobol+日本語ななでしこ?
cobolやなでしこは使ったことないのでわかりませんが、
私は英語を用いた言語よりはわかりやすいと思います。
コメント文での説明が要らないかどうかは作るものによりますけど。
>あるなら手にとって読んでみればいいのに
いろんな図書館に点々としてるそうで、
中にはどこにあるのかわからない図書館にある本だったりも・・・;
ちなみに、上げた24冊のうち私の工学部の校舎にある図書館に絞ると3冊しかないそうです。
>>162 >>164
中田先生の本読んでみます。
ドラゴンブックの方も取り寄せが届いたら読みます。
>>167
面白いならその2冊も読んでみます。
170デフォルトの名無しさん
2014/12/11(木) 21:37:16.34ID:Q8kAUXaJ >>167
> やさしいコンパイラの作り方と
> コンパイラのうちとそとは
> 読み物として面白い。
両方読んだ気がするが、内容覚えてないわ
> でもたぶん(今じゃ)なんの役にも立たないw
色々な人を呼び込むと言うのも、重要な役目だと思う
誰か「漫画で読むコンパイラ」とか書かないかなぁ w
> やさしいコンパイラの作り方と
> コンパイラのうちとそとは
> 読み物として面白い。
両方読んだ気がするが、内容覚えてないわ
> でもたぶん(今じゃ)なんの役にも立たないw
色々な人を呼び込むと言うのも、重要な役目だと思う
誰か「漫画で読むコンパイラ」とか書かないかなぁ w
171デフォルトの名無しさん
2014/12/11(木) 21:40:57.95ID:KrH9mSC/ まともにやる気あるなら、その中のどれでも一つ真剣に取り組めばいいよ。
迷うのはそれからでも遅くない
迷うのはそれからでも遅くない
172デフォルトの名無しさん
2014/12/11(木) 21:42:20.07ID:tbxqmm74 >>170
麻宮騎亜がアップを始めたようです。
麻宮騎亜がアップを始めたようです。
173デフォルトの名無しさん
2014/12/11(木) 21:57:20.15ID:JvQXLAia CPUの創り方が萌えキャラで出る時代だから
コンパイラ版が出る日も近いな
コンパイラ版が出る日も近いな
174デフォルトの名無しさん
2014/12/12(金) 03:52:20.71ID:yYnp70gr 疲れた時は白と黒のとびらとか。読み物だけど
175デフォルトの名無しさん
2014/12/13(土) 11:59:00.15ID:KEKavmkB >>168
共著じゃなくてAntlrの作者が書いた本の監訳だよ
共著じゃなくてAntlrの作者が書いた本の監訳だよ
2014/12/13(土) 19:31:14.67ID:LmsGKyNP
正直ドラゴンブックって内容はともかく説明はとても優しいよね
洋書はIT系に限らず懇切丁寧な事が多いと思う
洋書はIT系に限らず懇切丁寧な事が多いと思う
2014/12/13(土) 22:13:39.97ID:aWFoLZL3
虎も仲間に入れてやってください
サンプルがアレだが
サンプルがアレだが
178デフォルトの名無しさん
2015/01/19(月) 11:19:23.48ID:cYd/ZsDZ kmoriさん亡くなったって。
179デフォルトの名無しさん
2015/01/19(月) 11:34:19.54ID:CzsUjspG yaccの一実装書いてた人か。南無
https://web.archive.org/web/20080206191946/http://d.hatena.ne.jp/kmori58/20060702/p3
https://web.archive.org/web/20080206191946/http://d.hatena.ne.jp/kmori58/20060702/p3
180デフォルトの名無しさん
2015/01/19(月) 15:30:26.84ID:cYd/ZsDZ kmyaccも有名だが、「LSI-Cの作者の一人」だった。
181デフォルトの名無しさん
2015/01/20(火) 21:04:04.33ID:wHr1vYS1 熊ヤックと読んでいた
182片山博文MZ ◆T6xkBnTXz7B0
2015/02/18(水) 16:40:51.07ID:9VF3MRJc C++11の正規表現でCのスキャナーをスマートに書きたい。
しかし、コメントの扱いがややこしく、また、行番号の情報を取得する必要がある。
一行ごとに読み込むべきか、従来どおりトークンに切り分けて読み込むべきか。
全部をいっぺんに読み込んで'\n'でsplitする方法は実行時のメモリーと時間がかかると思う。
どういう戦略にすべきか?
しかし、コメントの扱いがややこしく、また、行番号の情報を取得する必要がある。
一行ごとに読み込むべきか、従来どおりトークンに切り分けて読み込むべきか。
全部をいっぺんに読み込んで'\n'でsplitする方法は実行時のメモリーと時間がかかると思う。
どういう戦略にすべきか?
183片山博文MZ ◆T6xkBnTXz7B0
2015/02/18(水) 17:03:37.74ID:9VF3MRJc 改行に特別なトークンを割り当てて、すべてのトークンを読み
込んだ後でトークンに行番号をつけてから改行のトークンを取り除くという
方法についてはどう思いますか?
込んだ後でトークンに行番号をつけてから改行のトークンを取り除くという
方法についてはどう思いますか?
184デフォルトの名無しさん
2015/02/18(水) 21:19:15.31ID:po3oOzQK Cってマクロとかインクルードとか有るん?
185片山博文MZ ◆T6xkBnTXz7B0
2015/02/19(木) 01:08:43.02ID:XXveEoOV マクロやインクルードは、プリプロセッサーがやってくれるよ
186デフォルトの名無しさん
2015/02/19(木) 12:19:19.08ID:b9Ke1XGw プリプロセッサーの展開後の行番号って要るのかね?
187デフォルトの名無しさん
2015/02/19(木) 19:51:00.22ID:rp3PUwqb 無かったらエラー表示するとき不便だろ
188デフォルトの名無しさん
2015/02/19(木) 21:27:05.57ID:wg16DBik 展開後の行番号の方がいらなくね?
プリプロセッサ文てコンパイラ側でも処理するよね?
#line とか
プリプロセッサ文てコンパイラ側でも処理するよね?
#line とか
189デフォルトの名無しさん
2015/02/19(木) 21:31:56.28ID:uOq48O3O コメントはプリプロセサで置き換えたらいかんのか
190デフォルトの名無しさん
2015/02/21(土) 01:08:42.33ID:XnZFjwve SmalltalkのVM上にJavaVMを構築してんだけど、
VMの話もここで良いんだよね。
VMの話もここで良いんだよね。
191デフォルトの名無しさん
2015/02/21(土) 12:59:06.48ID:eVOI8zE3 OK
192デフォルトの名無しさん
2015/02/21(土) 23:58:08.89ID:bst4VCEg >>182
Cのスキャナって正規表現だけで表現できるんか?(構文解析しないで良いエディタのhilightingとかは大丈夫だけど)
Cのスキャナって正規表現だけで表現できるんか?(構文解析しないで良いエディタのhilightingとかは大丈夫だけど)
193デフォルトの名無しさん
2015/02/22(日) 01:27:09.68ID:0QFgdJ2i >>191
了解。
SmalltalkのVM上でDalvik VM用のclassも動かしたいんですが、
いちいちDalvik用のVMまで作るのがメンドイです。
Dalvik用のclass形式からJavaVM用のclass形式に変換するオススメのLibraryを教えて下さい。
Libraryの言語はSmalltalkに書き直しますので何でもいいです。
了解。
SmalltalkのVM上でDalvik VM用のclassも動かしたいんですが、
いちいちDalvik用のVMまで作るのがメンドイです。
Dalvik用のclass形式からJavaVM用のclass形式に変換するオススメのLibraryを教えて下さい。
Libraryの言語はSmalltalkに書き直しますので何でもいいです。
194デフォルトの名無しさん
2015/02/23(月) 17:30:23.57ID:FikKUZMK195デフォルトの名無しさん
2015/02/23(月) 17:38:19.44ID:FikKUZMK196デフォルトの名無しさん
2015/02/23(月) 17:41:10.47ID:FikKUZMK javaで書いたDalvikのVM
http://www.eflow.jp/topics/090317.html
http://www.eflow.jp/topics/090317.html
197デフォルトの名無しさん
2015/02/23(月) 22:14:05.07ID:Fe2dvIpV C++で完結するって所に惹かれてboost::spiritを試してみたが…、これは死ねる。
198デフォルトの名無しさん
2015/02/24(火) 01:43:04.58ID:f8A7qwV2 共通部分式の除去のやり方がわかんねえ
定数伝播、四則演算も含む組み込み関数の畳み込み、使わない変数の除去、
ループ展開等を同じパスでやってるんだけど
共通部分式の除去とそれをやるのに必要な不変式の判定はまた別でやった方がいいのかな
不変式かどうかはループ最適化でも使えそうなんだけど混乱してきた
定数伝播、四則演算も含む組み込み関数の畳み込み、使わない変数の除去、
ループ展開等を同じパスでやってるんだけど
共通部分式の除去とそれをやるのに必要な不変式の判定はまた別でやった方がいいのかな
不変式かどうかはループ最適化でも使えそうなんだけど混乱してきた
199片山博文MZ ◆T6xkBnTXz7B0
2015/02/24(火) 08:04:58.95ID:UGr8Bbp/ >>198
ある計算式eについて、eの部分式を互いに参照するエントリーとして再帰的にテーブルに登録する。
登録するときにソートと重複チェックを行えば、テーブルは一意化できる。
テーブルの各エントリーの参照構造は、木構造のノードを成す。
ある計算式eについて、eの部分式を互いに参照するエントリーとして再帰的にテーブルに登録する。
登録するときにソートと重複チェックを行えば、テーブルは一意化できる。
テーブルの各エントリーの参照構造は、木構造のノードを成す。
200デフォルトの名無しさん
2015/02/24(火) 11:33:08.23ID:wemgVVUb >>198
式の属性に関する再帰方程式の近似解をニュートン法のように求めること、
これがデータフロー計算解法の本質と理解できてないんじゃない?
ドラゴンブックのavailable, killedの説明の所読んでみれば?
同じパス内でループしながら収束するまで計算するのよ。
式の属性に関する再帰方程式の近似解をニュートン法のように求めること、
これがデータフロー計算解法の本質と理解できてないんじゃない?
ドラゴンブックのavailable, killedの説明の所読んでみれば?
同じパス内でループしながら収束するまで計算するのよ。
201デフォルトの名無しさん
2015/02/24(火) 11:35:18.85ID:wemgVVUb ドラゴンブックのどの節か書こうとしたけど本が見つからない...
とりあえず、ここのp.10から。
http://dragonbook.stanford.edu/lecture-notes/Stanford-CS143/20-Optimization.pdf
とりあえず、ここのp.10から。
http://dragonbook.stanford.edu/lecture-notes/Stanford-CS143/20-Optimization.pdf
202デフォルトの名無しさん
2015/02/24(火) 17:44:49.00ID:H95vOz7j203デフォルトの名無しさん
2015/02/24(火) 17:53:23.22ID:avE+zAm1 多分ちゃんと読んだ方がかえって早い。
共通部分式A,Bがあって、例えばBの方の除去をやると、
Bの到達性がAの到達性にも付与される。
このことは他の属性に影響を及ぼしうる。
よってもう一度計算をしないとより正確な属性を求められない。
以下ループ。
よって収束するまで繰り返すことになる。
共通部分式A,Bがあって、例えばBの方の除去をやると、
Bの到達性がAの到達性にも付与される。
このことは他の属性に影響を及ぼしうる。
よってもう一度計算をしないとより正確な属性を求められない。
以下ループ。
よって収束するまで繰り返すことになる。
204デフォルトの名無しさん
2015/02/24(火) 18:04:39.54ID:H95vOz7j 変化がなくなるまで最適化処理を繰り返すのはわかった
205デフォルトの名無しさん
2015/02/24(火) 19:26:42.04ID:wUDy2moe >>197
コンパイル時間がか?
コンパイル時間がか?
206片山博文MZ ◆T6xkBnTXz7B0
2015/02/24(火) 20:45:40.84ID:UGr8Bbp/ __declspecとか__attribute__などをパースできないと正確な構造体型のサイズ
を求めることができない。しかしattribute周りの文法がメチャクチャやなあ。
を求めることができない。しかしattribute周りの文法がメチャクチャやなあ。
207片山博文MZ ◆T6xkBnTXz7B0
2015/03/03(火) 01:05:04.60ID:t6l1EelO 次は"typed value"の扱いだな。定数にも型がある。型付きの値を
扱えなければ、正確な定数値を求めることはできない。
扱えなければ、正確な定数値を求めることはできない。
208デフォルトの名無しさん
2015/03/03(火) 04:49:45.03ID:ZU1MaIS8 最適化なんてイラナイよね、何処まで処理系に依存する気なんだよw
209デフォルトの名無しさん
2015/03/08(日) 14:52:45.39ID:u8r5MR2m 初心者だがHSPって凄いね
自分でHSPみたいなの作ろうとすると途端につまづくw
内部でメッセージハンドルに登録していく言語だと思うんだけど
こんなにwinを感じさせない文法でwinと親和性高く作れるとは
自分でHSPみたいなの作ろうとすると途端につまづくw
内部でメッセージハンドルに登録していく言語だと思うんだけど
こんなにwinを感じさせない文法でwinと親和性高く作れるとは
210デフォルトの名無しさん
2015/03/08(日) 17:15:18.44ID:8c6PRT7L ランタイムの機能の量で躓くならともかくあの文法でつまづくなら>>1で概要把握して本読めば
211デフォルトの名無しさん
2015/03/09(月) 14:52:03.75ID:MIZIuI1f 文法とOSに何の関係が?
212デフォルトの名無しさん
2015/03/09(月) 16:12:25.65ID:J8WIpDef いただきジャンガリアンに辛酸をなめさせられたのだろうよ
213デフォルトの名無しさん
2015/03/09(月) 17:25:40.74ID:VM1FVYaf うーん初心者だから言い方わかんないんだけど
コマンドプロンプトのスクリプトってコマンドに従って単に実行していくだけだよね
でもwinだと実行されるのは素直に考えるとメッセージが来たとき
cでウインアプリつくるときはメッセージ毎に処理を書くけど上から順に読むスクリプトは
それはできないわけだからどう整合性取るのかなってことで悩んでた
結局メッセージ毎にリストがあってコマンドを読んだらそのリストに関数ポインタ名で追加、
メッセージ毎に呼ばれる関数はその種別のリストを上から順に実行していく
こんな感じで作ったけどこれでいいのかな
コマンドプロンプトのスクリプトってコマンドに従って単に実行していくだけだよね
でもwinだと実行されるのは素直に考えるとメッセージが来たとき
cでウインアプリつくるときはメッセージ毎に処理を書くけど上から順に読むスクリプトは
それはできないわけだからどう整合性取るのかなってことで悩んでた
結局メッセージ毎にリストがあってコマンドを読んだらそのリストに関数ポインタ名で追加、
メッセージ毎に呼ばれる関数はその種別のリストを上から順に実行していく
こんな感じで作ったけどこれでいいのかな
214デフォルトの名無しさん
2015/03/12(木) 21:28:48.21ID:BlO2EFmA そりゃ文法じゃなくて実行モデルだな。
イベント駆動ってことでしょ。
イベント駆動ってことでしょ。
215デフォルトの名無しさん
2015/04/13(月) 21:09:38.60ID:qtTodoaL 「Cのコンパイラなら何日かかけて作っても良いが、C++は、一人で
作るのは嫌だ。文法をきちんとカバーするのに日数がかかりすぎるから」
と言われたよ。
作るのは嫌だ。文法をきちんとカバーするのに日数がかかりすぎるから」
と言われたよ。
216デフォルトの名無しさん
2015/04/22(水) 02:22:50.19ID:eOWj6Ffd javaに近い構文の言語をつくろうとしてるんだけど、
ようやくchar配列に変換したソースから関数の外側を構文解析できた。
山括弧<>、文字列リテラル、コメントに気をつけつつ、
なんとか関数の中を無視してクラス・変数・関数の名前や型名を取得して
関数の中身にとりかかるところ。
関数の中身は丸括弧()が難関になりそう。
AAAA bbbb = ((HHHH)cccc.dddd.eeee(ffff.gggg(), jjjj)).iiii();
bbbb.kkkk = -10/(8-3)-9/-3
ようやくchar配列に変換したソースから関数の外側を構文解析できた。
山括弧<>、文字列リテラル、コメントに気をつけつつ、
なんとか関数の中を無視してクラス・変数・関数の名前や型名を取得して
関数の中身にとりかかるところ。
関数の中身は丸括弧()が難関になりそう。
AAAA bbbb = ((HHHH)cccc.dddd.eeee(ffff.gggg(), jjjj)).iiii();
bbbb.kkkk = -10/(8-3)-9/-3
217デフォルトの名無しさん
2015/04/22(水) 20:33:48.48ID:rBARkljm >>216
まるで違う言語に見えてしまうのだが。
まるで違う言語に見えてしまうのだが。
218デフォルトの名無しさん
2015/04/22(水) 21:30:55.14ID:eOWj6Ffd >>217
最初はクラス名、メンバ変数、メンバ関数を全部調べてからじゃないと
関数の中身に取り掛かれないと思ってた。
でもクラス名・変数名・関数名に区別は不要で、記号をヒントに階層を分解して、
それから型名の存在の有無・整合性を調べるという風にフェーズを分けれそう。
でも()が演算の優先順位、型キャスト、メソッド...どれに使われているのか
区別できるかは不安。for文とかは最初に予約語が入るからやりやすそうだけど。
Person person = ((Factory)group.cache.getFactory(provider.getResource(), url)).create();
person.id = -10/(8-3)-9/-3;
最初はクラス名、メンバ変数、メンバ関数を全部調べてからじゃないと
関数の中身に取り掛かれないと思ってた。
でもクラス名・変数名・関数名に区別は不要で、記号をヒントに階層を分解して、
それから型名の存在の有無・整合性を調べるという風にフェーズを分けれそう。
でも()が演算の優先順位、型キャスト、メソッド...どれに使われているのか
区別できるかは不安。for文とかは最初に予約語が入るからやりやすそうだけど。
Person person = ((Factory)group.cache.getFactory(provider.getResource(), url)).create();
person.id = -10/(8-3)-9/-3;
219デフォルトの名無しさん
2015/04/22(水) 22:59:19.66ID:LKLiXgla いまいち分からないけど、識別子の次にあったら関数呼び出しで
それ以外は式とかでいけないの
それ以外は式とかでいけないの
220デフォルトの名無しさん
2015/04/22(水) 23:28:51.38ID:eOWj6Ffd いけるか分からない。とりあえずやってみるってところ
221デフォルトの名無しさん
2015/04/23(木) 08:14:58.39ID:+O6VWDUu222デフォルトの名無しさん
2015/04/27(月) 01:02:40.49ID:RiYFohCl メソッドの中が上手くいかんというか何から始めたら良いのか分からん
コンパイル速度が遅くなるけど、分解フェーズを何層にも分けて
何度もループで調べていけば良いのかな
コンパイル速度が遅くなるけど、分解フェーズを何層にも分けて
何度もループで調べていけば良いのかな
223デフォルトの名無しさん
2015/04/27(月) 06:59:39.15ID:EFAP6joI コンパイラの教科書の一冊でも読んで構文解析を勉強してみ
224デフォルトの名無しさん
2015/04/27(月) 09:38:16.26ID:ZDDsb7dY C系のクソみたいな構文ルールをそのまま真似てどうすんの
自作なら作りやすいようにキーワード追加すればいいのよ
キャスト式にキーワード付けなかったのは最大の誤りの一つ
自作なら作りやすいようにキーワード追加すればいいのよ
キャスト式にキーワード付けなかったのは最大の誤りの一つ
225デフォルトの名無しさん
2015/04/27(月) 09:56:10.90ID:qDIHhHi0 SSA形式からスタックマシンのコード生成の最適化みたいなのに参考になる文献ってないかな?
226デフォルトの名無しさん
2015/04/27(月) 14:22:00.53ID:RiYFohCl >>224
そうだね。HaxeとかFlashからぱくって、C形式のキャストは無くしてみるわ
int i = cast Integer ( 0.005f );
int i = 0.005f as Integer;
そうだね。HaxeとかFlashからぱくって、C形式のキャストは無くしてみるわ
int i = cast Integer ( 0.005f );
int i = 0.005f as Integer;
227デフォルトの名無しさん
2015/04/28(火) 18:20:14.24ID:PlNb5vya 最終的に何を目指そうかしら
1)LLVMで動かす
→ 超難しそう
2)Luaのように組み込みスクリプトとして動かす
→ 重そう。メモリ管理は全部ウィークポインタで良いのかな
(C/C++組み込みならnew&deleteするようなスクリプトでも良さそう)
3)JavaScriptなどに変換
→ たぶん例外のバックトレースとかを変換するデバッグ環境が必須
1)LLVMで動かす
→ 超難しそう
2)Luaのように組み込みスクリプトとして動かす
→ 重そう。メモリ管理は全部ウィークポインタで良いのかな
(C/C++組み込みならnew&deleteするようなスクリプトでも良さそう)
3)JavaScriptなどに変換
→ たぶん例外のバックトレースとかを変換するデバッグ環境が必須
228片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 23:02:55.34ID:p1RbtT4Y229デフォルトの名無しさん
2015/05/09(土) 18:57:31.49ID:SYpntI8c バイトコードインタプリタつくっているんだけど
スタックマシンのコンパイラについて
パラメータスタック(データスタック)はヒープ上におくべき?
それともネイティブの領域におくべき?
スタックマシンのコンパイラについて
パラメータスタック(データスタック)はヒープ上におくべき?
それともネイティブの領域におくべき?
230デフォルトの名無しさん
2015/05/09(土) 19:41:52.28ID:SYpntI8c231デフォルトの名無しさん
2015/05/09(土) 20:41:51.08ID:DhZyBtDK >>230
ネイティブスタックにデータも置くって事だよね?
データスタックは分けておいた方がイロイロ楽だったので列挙
たしかこんなの
GC使う様な実装の時の仕分け
実行パスがJITでコンパイルコードと非コンパイルVMコードの行ったり来たりするとき
例外のスタックトレース(これもJIT時のアレコレあり)
チープマシンにVM仕込むときアセンブラで書くのが楽しい
最後はちげぇけど
ネイティブスタックにデータも置くって事だよね?
データスタックは分けておいた方がイロイロ楽だったので列挙
たしかこんなの
GC使う様な実装の時の仕分け
実行パスがJITでコンパイルコードと非コンパイルVMコードの行ったり来たりするとき
例外のスタックトレース(これもJIT時のアレコレあり)
チープマシンにVM仕込むときアセンブラで書くのが楽しい
最後はちげぇけど
232デフォルトの名無しさん
2015/05/09(土) 21:02:43.06ID:SYpntI8c >>231
自分のVMは典型的なスタックマシンで
パラメータスタック(データスタック)とコールスタックは別です。
そのうちデータスタックをヒープ内におくか
アセンブリでかかれたほうのネイティブの領域におくかってことです。
ネイティブ領域においたほうが実際のアドレスとVM上でのアドレスの変換がないので
速度としては速いのですが
欠点としてバイトコードからスタックを参照することができません
焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
基本的になければネイティブ領域におこうかとおもっています
これまでつくった経験がないので設計としてどちらがよいかわからずお聞きしました
自分のVMは典型的なスタックマシンで
パラメータスタック(データスタック)とコールスタックは別です。
そのうちデータスタックをヒープ内におくか
アセンブリでかかれたほうのネイティブの領域におくかってことです。
ネイティブ領域においたほうが実際のアドレスとVM上でのアドレスの変換がないので
速度としては速いのですが
欠点としてバイトコードからスタックを参照することができません
焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
基本的になければネイティブ領域におこうかとおもっています
これまでつくった経験がないので設計としてどちらがよいかわからずお聞きしました
233デフォルトの名無しさん
2015/05/10(日) 09:31:50.02ID:ZQGgJB6p >>232
> 焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
バイトコードの設計は終わってるんじゃないのか?
バイトコードの設計終わってりゃ参照の必要があるかどうかはわかってるだろうし、バイトコードの設計終わってないのに VM の構成考えてるならお前が終わってる
> 焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
バイトコードの設計は終わってるんじゃないのか?
バイトコードの設計終わってりゃ参照の必要があるかどうかはわかってるだろうし、バイトコードの設計終わってないのに VM の構成考えてるならお前が終わってる
234デフォルトの名無しさん
2015/05/10(日) 09:50:11.77ID:YKkUWNQO235デフォルトの名無しさん
2015/05/19(火) 18:50:21.34ID:a+aajTcz 番兵の文字は
utf-8でも16でも32でも-1でいいんですか?
utf-8でも16でも32でも-1でいいんですか?
236デフォルトの名無しさん
2015/06/24(水) 17:14:03.39ID:ZsIPeucp 動的型付けってLLVMだとどうやって実装するんだろ
237デフォルトの名無しさん
2015/07/10(金) 19:59:28.32ID:h+kJ9m+3 構文解析+Cに変換して内部でgcc呼んでコンパイルするプログラムはコンパイラって呼んでいいの?
238デフォルトの名無しさん
2015/07/10(金) 20:11:15.28ID:tLjH7MQJ トランスレータじゃねえの
239デフォルトの名無しさん
2015/07/11(土) 08:23:11.34ID:SvdcMd32 >>238
変換したCコードを出すならトランスレーターだけどバイナリまで出すならコンパイラーでいいだろ
変換したCコードを出すならトランスレーターだけどバイナリまで出すならコンパイラーでいいだろ
240片山博文MZ ◆T6xkBnTXz7B0
2015/07/28(火) 03:30:13.81ID:92wk7rzR 果たして文法を仮想化できるか
241デフォルトの名無しさん
2015/08/19(水) 08:24:37.58ID:zh/OeKTd 凄いこと発見したんだけれどもΛの記号は上の尖がったところがルートで
下の二つの棒が辺を表しているんだな
下の二つの棒が辺を表しているんだな
242デフォルトの名無しさん
2015/08/19(水) 22:05:03.04ID:caRlC37E 言語非依存の仮想マシンっていうアイデアがいまいち大成功していないように見えるのって
なんか理由があるのかな。
なんか理由があるのかな。
243デフォルトの名無しさん
2015/08/19(水) 22:59:51.18ID:7Z0FzJPx 落ちてたllvmスレを立て直した
【最速へ】LowLevelVirtualMachine 2【LLVM】
http://peace.2ch.net/test/read.cgi/tech/1439992758/
【最速へ】LowLevelVirtualMachine 2【LLVM】
http://peace.2ch.net/test/read.cgi/tech/1439992758/
245デフォルトの名無しさん
2015/08/20(木) 00:06:05.42ID:BI1Ot8hx >>244
実際に成功していても成功していないよ・う・に・見・え・るって話じゃないの?
XCodeのコンパイラがllvm,clangだってのは開発者にしか見えないしclangの話だけ聞いているとgccが組み込み機のCPUに対応してたころみたいに派手に活躍してるとは感じられないって事じゃ無いの?
実際に成功していても成功していないよ・う・に・見・え・るって話じゃないの?
XCodeのコンパイラがllvm,clangだってのは開発者にしか見えないしclangの話だけ聞いているとgccが組み込み機のCPUに対応してたころみたいに派手に活躍してるとは感じられないって事じゃ無いの?
246デフォルトの名無しさん
2015/08/20(木) 04:55:31.33ID:uOqBPetd たぶん外国には、CASL2のような仮想アセンブラを使う、
情報処理試験が無いのだろう
2人の大学生が作ったLLVMに、Appleが飛びついた。
それで、Lattner はAppleに就職した
情報処理試験が無いのだろう
2人の大学生が作ったLLVMに、Appleが飛びついた。
それで、Lattner はAppleに就職した
247デフォルトの名無しさん
2015/08/20(木) 11:06:47.70ID:XXXu8/KU 良く言えば新世代の輝き
悪く言えば発展途上の不安定さ
さらに組み込みで言えばカバー範囲の幅広さは犠牲にされがち
将来性でメシが食えるのはごく一部
悪く言えば発展途上の不安定さ
さらに組み込みで言えばカバー範囲の幅広さは犠牲にされがち
将来性でメシが食えるのはごく一部
248デフォルトの名無しさん
2015/08/20(木) 11:31:12.43ID:WmW0wMbd 痛い文章だ
249デフォルトの名無しさん
2015/08/24(月) 00:47:20.35ID:OjRQ25eS マルチメソッドを効率よく実装するにはどのようにすればよいですか?
250デフォルトの名無しさん
2015/08/24(月) 01:10:40.39ID:YG1kZeuQ マルチメソッドって何?
251デフォルトの名無しさん
2015/08/24(月) 01:36:14.61ID:OjRQ25eS OOPの最も基本的な機能です
引数によって、メソッドが切り替わります
多態といいます
引数によって、メソッドが切り替わります
多態といいます
252デフォルトの名無しさん
2015/08/24(月) 02:01:55.26ID:YG1kZeuQ オーバーロードのことですか?
ではマングリング
ではマングリング
253デフォルトの名無しさん
2015/08/24(月) 02:21:03.16ID:OjRQ25eS マルチメソッドはオーバーロードでは無いです
一般にオーバーロードは静的ですが、
マルチメソッドは動的です
一般にオーバーロードは静的ですが、
マルチメソッドは動的です
254デフォルトの名無しさん
2015/08/24(月) 08:00:36.10ID:WVPITNbu255デフォルトの名無しさん
2015/08/24(月) 08:19:25.57ID:jJXNOMmM clojureのdefmultiみたいな奴じゃないの?
256デフォルトの名無しさん
2015/08/24(月) 11:49:46.23ID:BYoao/vR 多重ディスパッチのニッチな要求に応えるものか
それとも単純な動的バインディングだけの問題なのか
それとも単純な動的バインディングだけの問題なのか
257デフォルトの名無しさん
2015/08/26(水) 18:36:02.43ID:XR0u/yGZ マルチメソッドはC++相談室を検索すればなんなのかがわかる
259デフォルトの名無しさん
2015/08/30(日) 19:15:42.50ID:nhXJHOe7 型を連想配列やトライ木で管理すればO(1)
260デフォルトの名無しさん
2015/08/30(日) 20:08:17.93ID:brcjELIg >>259
clojureはソレだね
clojureはソレだね
261デフォルトの名無しさん
2015/09/17(木) 12:38:19.48ID:mHCGeegj 中間言語の設計に関するノウハウとかアンチパターンとかが書かれた本誰か知ってる?
LLVMとかP-codeとかJava VMとか、あるいはKnuthのMIX/MMIXみたいな機械語に近いレベルの言語を
ソフトウェア実装すること前提に設計する場合について知りたい。
今言語設計してて、そろそろ構文解析できそうだから学んでおきたいんだけど。
LLVMとかP-codeとかJava VMとか、あるいはKnuthのMIX/MMIXみたいな機械語に近いレベルの言語を
ソフトウェア実装すること前提に設計する場合について知りたい。
今言語設計してて、そろそろ構文解析できそうだから学んでおきたいんだけど。
262デフォルトの名無しさん
2015/09/17(木) 19:56:34.99ID:7ftMaB4B 最初はネイティブに落とした方がいいぞ
中間言語とか遠回りしてたらアホみたいだぞ
中間言語とか遠回りしてたらアホみたいだぞ
263デフォルトの名無しさん
2015/09/18(金) 15:07:01.58ID:QAQ6VXx0 そんな物他人に教わるくらいならおとなしく既存のを使っとけ
264デフォルトの名無しさん
2015/09/18(金) 20:35:24.73ID:F4ynHS7Z 本として出して需要あるか?もしかしたらサーベイ論文なら探せばあるかも
265261
2015/09/18(金) 21:16:12.07ID:ArWsl8Ey266デフォルトの名無しさん
2015/09/18(金) 22:17:11.93ID:i7DEL3du267261
2015/09/19(土) 09:19:04.79ID:YlOPp2hb >>266
swiftのように演算子をユーザー定義出来て、
c++のように同名異引数の関数を定義出来て、
Lispのように引数間のカンマが要らず、
Rubyのようにカッコを省ける
そんな言語を設計中です。
それらの両立のために実行中に文法を書き換えて構文解析器を再構成するという手法を採ってるので、コンパイル出来ないんですよね……
clispのリードマクロを文脈依存に拡張したものだと言えば大体あってるかと。
ちょっとErlang関連の資料を見てみます。
swiftのように演算子をユーザー定義出来て、
c++のように同名異引数の関数を定義出来て、
Lispのように引数間のカンマが要らず、
Rubyのようにカッコを省ける
そんな言語を設計中です。
それらの両立のために実行中に文法を書き換えて構文解析器を再構成するという手法を採ってるので、コンパイル出来ないんですよね……
clispのリードマクロを文脈依存に拡張したものだと言えば大体あってるかと。
ちょっとErlang関連の資料を見てみます。
レスを投稿する
ニュース
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 毒親「働かないでいつもゴロゴロして!」俺「…」毒親「あっ近隣に熊が出たって!」俺「ふぅ」毒親「どこ行くんだ」
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 生活保護の受給額ってなんでこんなに安いの?
- お前らは“スカイマイルタワー”建設計画を知っているか?
- これ誰か分かるか?
- 支払い詰まってインターネット止まった
