「コンパイラ・スクリプトエンジン」相談室16 (648レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
38: sage [] 2014/09/26(金) 04:19:50.66 ID:VUi+/UsP(1) AAS
winXP visual studio 2010 expressで
antlr4の導入できた方いらっしゃいませんでしょうか?
59: デフォルトの名無しさん [sage] 2014/11/01(土) 19:25:31.66 ID:etXlBO/A(1) AAS
ファイル名…かな
132(1): 117 [sage] 2014/12/08(月) 00:25:52.66 ID:yQ2quuvD(1/3) AAS
いろいろ考えているうちに構文規則がおかしなことになってきました;
とりあえず負の数やかっこを含む数式の構文木を一通り考えてみたつもりなんですけど、
以下のような感じであっているでしょうか?
外部リンク:fast-uploader.com
また、他に欠けているパターンはないでしょうか?
164(1): デフォルトの名無しさん [sage] 2014/12/11(木) 20:21:08.66 ID:ED9Fc+9a(1) AAS
中田本は結構いいね。でもドラゴンブックも読んどくべきだけどね。
219(1): デフォルトの名無しさん [sage] 2015/04/22(水) 22:59:19.66 ID:LKLiXgla(1) AAS
いまいち分からないけど、識別子の次にあったら関数呼び出しで
それ以外は式とかでいけないの
285: デフォルトの名無しさん [sage] 2015/09/21(月) 21:42:55.66 ID:LoRahTLC(1) AAS
>>283283(2): デフォルトの名無しさん [] 2015/09/21(月) 19:55:02.85 ID:x6IKJHaI(1) AAS
スクリプト型の言語って実行時にコンパイル(構文解析?)が発生するから、コンパイル型の言語より遅いのですよね。
では、アプリケーションの起動時にスクリプトを読み込んだ後のパフォーマンスは、スクリプト型もコンパイル型も大差ないのでしょうか?
「スクリプト型の言語」やら「コンパイル」やらが何を意味してるのかにも依りますが、
よくある速度重視の構成だと、読み込み時に構文解析や意味解析、中間コード生成を終わらせて
実行時に中間コードを(1)実行可能バイナリに変換するパターンと、(2)仮想マシン上でエミュレートするパターンとの二通りがあります。
(1)の場合は変換処理そのものがそれなりに重く、
しかも高度な最適化を掛けるとそれ自体に時間が掛かってしまうので
最適化は殆ど掛けられずコンパイラ型言語の2〜3倍は遅くなりますし、
(2)の場合は1命令実行するのに命令を読み込んで比較してジャンプして、
とCPUがアナログ回路上で並列処理してる計算を逐次的に実行するのでかなり重くなります。
372: デフォルトの名無しさん [sage] 2016/01/31(日) 20:53:44.66 ID:7LoAMsY1(1) AAS
入門書一冊読みました=マスターしました
419: デフォルトの名無しさん [sage] 2016/04/01(金) 03:11:11.66 ID:38psm3gC(1) AAS
>>418418(1): デフォルトの名無しさん [] 2016/03/31(木) 23:33:53.46 ID:m6GiZo6g(1) AAS
業務ソフト開発用のコンパイラと、ゲーム開発用のコンパイラは、
当然、分けて考えないとダメだよな?
だめとは何が?
成果物によっては業務だと下手すると死人が出る
ゲームだと下手するとクレームで会社が倒産する
でもその成果物はコンパイラ以外にも色んな工程を経て作られたものだから
最終的にコンパイラが原因だったとしてもコンパイラやその開発者が追及を受ける謂れはない
例えばキミの作ったゴミコンパイラで死人が出たとして責任とれますか?
489: デフォルトの名無しさん [] 2016/04/20(水) 11:06:43.66 ID:fkY4xDrs(1) AAS
グラフィック関数ってOpenGLとかそういうはなしじゃないのか・・・
524: デフォルトの名無しさん [] 2016/04/28(木) 14:16:09.66 ID:7cooGRk/(1) AAS
lexとyaccは、既存のものを使うべきか、自作すべきか、悩ましいね。
537: デフォルトの名無しさん [] 2016/04/29(金) 23:41:20.66 ID:o23yQzXI(3/3) AAS
>>531531(2): デフォルトの名無しさん [sage] 2016/04/29(金) 10:04:10.82 ID:GdtJdaFL(1) AAS
バイトコードのテキストってのが若干意味不明だが
バイトコードならアセンブル(バイナリ化)しておかないか普通
a = b + c * d
を二分木のASTで
(st (ldptr local[0]) (add (ld local[1]) (mul (ld local[2]) (ld local[3]))))
みたいに格納して、ポインタ1つあたり64 bits、ノード構造体のサイズが24 bytesと仮定して
glibc mallocを使うことを仮定して全部で32 bytes * 7 = 224 bytesのヒープを消費する。
一方でレジスタ型VMを仮定して、簡単の為に1命令32 bits固定長とすると、例えば
ldptr r0, local[0] / ld r1, local[1] / ld r2, local[2] / ld r3, local[3] /
mul r4, r2, r3 / add r5, r1, r4 / st r0, r5
の7命令で与式が表現できるから、
配列の中身の長さが2^nに拡大されて予約される事を仮定すると4 bytes * 8 = 32 bytes
これに配列の管理領域が2ワード16 bytes、
glibc mallocを使うことを仮定すると2箇所の領域の管理で2ワード16 bytes必要で
合計で64 bytesのヒープを消費する。
ただ、配列には配列の問題点と言うかでっかい領域を再確保するのが難しい事があるから
文単位ではリストや木を、式単位では配列を使うってのがインタプリタとしては良いんじゃないかなとは思う。
>バイトコードならアセンブル(バイナリ化)しておかないか普通
たしかに普通は読み込み速度的にバイナリデータが望ましいのだけど、
手さぐりで試作するからメモ帳で読み書きできるテキスト形式でやってみるんだ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.041s