escm0001
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* ES-C向けのmemo#1
-(by [[K]], 2020.04.27)
** 2020.04.27 #0
-ES-CとES-BASICは統合する。どうせフロントエンド以外は共通...
-内部バイトコードフォーマット案
|NOP|00||
|REM1|01 : n||
|REM2|02 : flg : n||
|DEF|04 : flg : id : typ : siz|ローカル変数宣言 / ラベル...
|OR |10 : bit : flag : dst : src0 : src1|dst/src0/src1はh...
|XOR|11 : bit : flag : dst : src0 : src1|bitはhh4の8bit形...
|AND|12 : bit : flag : dst : src0 : src1|命令に16bit形式...
|ADD|14 : bit : flag : dst : src0 : src1|4+3=7バイトにも...
|SUB|15 : bit : flag : dst : src0 : src1||
|MUL|16 : bit : flag : dst : src0 : src1||
-bitフィールドはdstなどからわかるので、指定させなくてもい...
-dstに-1を指定させることで、2項形式にできるかもしれない。
--そうすれば、4+4=8バイトにできる。
-符号付きhh4 → (参考) http://osask.net/w/634.html
|4bit|00xx|0~3|
|8bit|100x:xxxx|0~1f|
|12bit|1100:xxxx:xxxx|0~ff|
|16bit|1110:0xxx:xxxx:xxxx|0~7ff|
|24bit|0111:0100:0xx...xx|0~7fff|
|28bit|0111:0101:0xx...xx|0~7ffff|
|32bit|0111:0110:0xx...xx|0~7fffff|
** 2020.04.28 #0
|opc(12),flg(4),prm(16)x3|これだと8バイト長になる|
|opc(16),flg(16),prm(32)x3|これだと16バイト長になる|
-内部でいったん16バイト長に変換すると、その後は楽になるか...
-prm
-- -1:省略値
-- -3:直前テンポラリ
-- -4:直後テンポラリ
-- -8~-5:直前テンポラリ
-- -12~-9:直後テンポラリ
-フラグ
--bit0:入力値も出力値も正の数だと決めつけてよい(符号付き...
-そのほか
--ORでsrc1をつぶして代入文にする
--CMPJEでsrc0,src1をつぶして無条件分岐にする
--DEFでtyp=1は整数レジスタ変数2のべき(1で1bit、-1でunsig...
** 2020.04.29 #0
-だんだんこのレイヤを作る必然性がわからなくなってきたので...
-このレイヤのおかげで、高級言語は実レジスタ数がいくつなの...
-基本型の対応関係も気にしなくていい。
** 2020.05.01 #0
-やっと考えがまとまってきた。そしてこのレイヤを独立して作...
-レジスタ割り当ては結構骨の折れる作業なので、それを下位に...
-上位言語は、分岐予測などの情報も与える。あるラベルに対し...
-ABIは独自のものにする。
** 2020.05.02 #0
-ES-Cは以下のような構成にする予定
--ES-CやES-BASICのレイヤ。ここが機種非依存なバイトコード...
--共通最適化レイヤ。バイトコードに対して簡単な最適化を行...
--機種依存バイナリ生成レイヤ。ここがx86やx64やARMの機械語...
-こうすることで、ES-CやES-BASICはかなり作りやすくなるはず...
-バイトコードはOSECPU-VMの時のものをベースにするかもしれ...
-なぜこんな複雑な構造にするのかといえば、いろんなCPUに簡...
-昨年の、最初にx64向けに作っていて、後になってx86にも対応...
-そしてこれは「オレオレLLVMもどき」の開発に近いものがある...
** 2020.05.03 #0
-結局私には才能があるのだと思う、そのせいで何を作ってもと...
** 2020.05.04 #0
-テキストエディタでファイルを保存すると、それを自動検出し...
-もしプログラムの編集管理をテキストエディタに任せられるの...
-まず最初にLIDEコマンド(ライトIDE)を実行して、どのファ...
-これをやるためには、コマンドプロンプトが入力待ちになった...
** 2020.05.12 #0
-今までx86の機械語を調べるためにインターネットで検索して...
-便利になったなあ。・・・そして調べた機械語を使ってES-BAS...
** 2020.05.14 #0
-ES-BASICのmkexeを少し拡張して、乱数が利用できるようにな...
** 2020.05.15 #0
-ここしばらく、コード生成時にどこまで最適化をするべきかを...
-やっと決心が9割くらい固まった。ES-BASICにおいては最適化...
--どんなに最適化を頑張っても人間がアセンブラで慎重に書い...
--最適化を頑張れば、コンパイル時間は長くなり、処理系が複...
--私が高級言語でやりたいのは、軽く書いて軽く実行して軽く...
--アセンブラができない人にとっては、高級言語だけで最高の...
-この上で、複数の言語を切り替えて記述できるようにすること...
** 2020.05.17 #0
-プログラミング言語を自作するとしたら何が差別化要因になる...
-ES-BASICの場合で考えてみる。
-(1)スクリプト言語とコンパイラを統合したのは、世界初では...
-(2)デバッグ機能重視というのも、最近では珍しいのではない...
--私の印象では、デバッグ機能を充実させても、初期のころは...
--それは全くその通りだったのだけど、私はその指摘はあまり...
-(3)サイズ重視も今では珍しい方針だと思う。これは他ではま...
--もちろん大きなプログラムでは強い最適化を持っている処理...
--まあ小さくできても何の役に立つのかという指摘はあるし、...
** 2020.05.17 #1
-きっかけがあったので、ES-BASICを「はりぼてOS」に移植して...
-きっとそんなには大変ではないはずです。それにもし誰かが移...
-ということで、ちょっとやってみます。・・・もし予期せぬ問...
** 2020.05.26 #0
-ES-BASICを「はりぼてOS」に移植する話は、主にこちらでやっ...
** 2020.05.27 #0
-ES-BASICの「はりぼてOS」への移植は、結構いい感じになって...
-「はりぼてOS」みたいな単純な自作OS上でも、ES-BASICみたい...
** 2020.06.11 #0
-ES-C ver.0.0が目指していること:
--ソースコードはいったんメモリ上で仮想バイナリに変換され...
--仮想バイナリから、ターゲットのCPU/OS向けにバイナリ化さ...
--バイナリ生成時は、1パスと2パスから選べる。これでJccなど...
--x86に対しても、同一の仮想バイナリから実行バイナリを生成...
---つまり共通だからといって、最大公約数的に下にそろえるの...
** 2020.06.12 #0
-私がES-Cでやろうとしていることって、結局はpコードマシン...
--https://ja.wikipedia.org/wiki/P%E3%82%B3%E3%83%BC%E3%83...
-私は新規性がないことを悪いとは思っていない。いいものが昔...
** 2020.07.28 #0
-私は以前、言語を機能ブロックでに分割しなければいけないと...
-今、jckライブラリをやめてesvmに切り替えているわけだけど...
-jckは言語を作りやすくするために、jck側にたくさんの機能を...
-わかってみれば、なんでそんな当たり前のことに長く気付けな...
* こめんと欄
#comment
終了行:
* ES-C向けのmemo#1
-(by [[K]], 2020.04.27)
** 2020.04.27 #0
-ES-CとES-BASICは統合する。どうせフロントエンド以外は共通...
-内部バイトコードフォーマット案
|NOP|00||
|REM1|01 : n||
|REM2|02 : flg : n||
|DEF|04 : flg : id : typ : siz|ローカル変数宣言 / ラベル...
|OR |10 : bit : flag : dst : src0 : src1|dst/src0/src1はh...
|XOR|11 : bit : flag : dst : src0 : src1|bitはhh4の8bit形...
|AND|12 : bit : flag : dst : src0 : src1|命令に16bit形式...
|ADD|14 : bit : flag : dst : src0 : src1|4+3=7バイトにも...
|SUB|15 : bit : flag : dst : src0 : src1||
|MUL|16 : bit : flag : dst : src0 : src1||
-bitフィールドはdstなどからわかるので、指定させなくてもい...
-dstに-1を指定させることで、2項形式にできるかもしれない。
--そうすれば、4+4=8バイトにできる。
-符号付きhh4 → (参考) http://osask.net/w/634.html
|4bit|00xx|0~3|
|8bit|100x:xxxx|0~1f|
|12bit|1100:xxxx:xxxx|0~ff|
|16bit|1110:0xxx:xxxx:xxxx|0~7ff|
|24bit|0111:0100:0xx...xx|0~7fff|
|28bit|0111:0101:0xx...xx|0~7ffff|
|32bit|0111:0110:0xx...xx|0~7fffff|
** 2020.04.28 #0
|opc(12),flg(4),prm(16)x3|これだと8バイト長になる|
|opc(16),flg(16),prm(32)x3|これだと16バイト長になる|
-内部でいったん16バイト長に変換すると、その後は楽になるか...
-prm
-- -1:省略値
-- -3:直前テンポラリ
-- -4:直後テンポラリ
-- -8~-5:直前テンポラリ
-- -12~-9:直後テンポラリ
-フラグ
--bit0:入力値も出力値も正の数だと決めつけてよい(符号付き...
-そのほか
--ORでsrc1をつぶして代入文にする
--CMPJEでsrc0,src1をつぶして無条件分岐にする
--DEFでtyp=1は整数レジスタ変数2のべき(1で1bit、-1でunsig...
** 2020.04.29 #0
-だんだんこのレイヤを作る必然性がわからなくなってきたので...
-このレイヤのおかげで、高級言語は実レジスタ数がいくつなの...
-基本型の対応関係も気にしなくていい。
** 2020.05.01 #0
-やっと考えがまとまってきた。そしてこのレイヤを独立して作...
-レジスタ割り当ては結構骨の折れる作業なので、それを下位に...
-上位言語は、分岐予測などの情報も与える。あるラベルに対し...
-ABIは独自のものにする。
** 2020.05.02 #0
-ES-Cは以下のような構成にする予定
--ES-CやES-BASICのレイヤ。ここが機種非依存なバイトコード...
--共通最適化レイヤ。バイトコードに対して簡単な最適化を行...
--機種依存バイナリ生成レイヤ。ここがx86やx64やARMの機械語...
-こうすることで、ES-CやES-BASICはかなり作りやすくなるはず...
-バイトコードはOSECPU-VMの時のものをベースにするかもしれ...
-なぜこんな複雑な構造にするのかといえば、いろんなCPUに簡...
-昨年の、最初にx64向けに作っていて、後になってx86にも対応...
-そしてこれは「オレオレLLVMもどき」の開発に近いものがある...
** 2020.05.03 #0
-結局私には才能があるのだと思う、そのせいで何を作ってもと...
** 2020.05.04 #0
-テキストエディタでファイルを保存すると、それを自動検出し...
-もしプログラムの編集管理をテキストエディタに任せられるの...
-まず最初にLIDEコマンド(ライトIDE)を実行して、どのファ...
-これをやるためには、コマンドプロンプトが入力待ちになった...
** 2020.05.12 #0
-今までx86の機械語を調べるためにインターネットで検索して...
-便利になったなあ。・・・そして調べた機械語を使ってES-BAS...
** 2020.05.14 #0
-ES-BASICのmkexeを少し拡張して、乱数が利用できるようにな...
** 2020.05.15 #0
-ここしばらく、コード生成時にどこまで最適化をするべきかを...
-やっと決心が9割くらい固まった。ES-BASICにおいては最適化...
--どんなに最適化を頑張っても人間がアセンブラで慎重に書い...
--最適化を頑張れば、コンパイル時間は長くなり、処理系が複...
--私が高級言語でやりたいのは、軽く書いて軽く実行して軽く...
--アセンブラができない人にとっては、高級言語だけで最高の...
-この上で、複数の言語を切り替えて記述できるようにすること...
** 2020.05.17 #0
-プログラミング言語を自作するとしたら何が差別化要因になる...
-ES-BASICの場合で考えてみる。
-(1)スクリプト言語とコンパイラを統合したのは、世界初では...
-(2)デバッグ機能重視というのも、最近では珍しいのではない...
--私の印象では、デバッグ機能を充実させても、初期のころは...
--それは全くその通りだったのだけど、私はその指摘はあまり...
-(3)サイズ重視も今では珍しい方針だと思う。これは他ではま...
--もちろん大きなプログラムでは強い最適化を持っている処理...
--まあ小さくできても何の役に立つのかという指摘はあるし、...
** 2020.05.17 #1
-きっかけがあったので、ES-BASICを「はりぼてOS」に移植して...
-きっとそんなには大変ではないはずです。それにもし誰かが移...
-ということで、ちょっとやってみます。・・・もし予期せぬ問...
** 2020.05.26 #0
-ES-BASICを「はりぼてOS」に移植する話は、主にこちらでやっ...
** 2020.05.27 #0
-ES-BASICの「はりぼてOS」への移植は、結構いい感じになって...
-「はりぼてOS」みたいな単純な自作OS上でも、ES-BASICみたい...
** 2020.06.11 #0
-ES-C ver.0.0が目指していること:
--ソースコードはいったんメモリ上で仮想バイナリに変換され...
--仮想バイナリから、ターゲットのCPU/OS向けにバイナリ化さ...
--バイナリ生成時は、1パスと2パスから選べる。これでJccなど...
--x86に対しても、同一の仮想バイナリから実行バイナリを生成...
---つまり共通だからといって、最大公約数的に下にそろえるの...
** 2020.06.12 #0
-私がES-Cでやろうとしていることって、結局はpコードマシン...
--https://ja.wikipedia.org/wiki/P%E3%82%B3%E3%83%BC%E3%83...
-私は新規性がないことを悪いとは思っていない。いいものが昔...
** 2020.07.28 #0
-私は以前、言語を機能ブロックでに分割しなければいけないと...
-今、jckライブラリをやめてesvmに切り替えているわけだけど...
-jckは言語を作りやすくするために、jck側にたくさんの機能を...
-わかってみれば、なんでそんな当たり前のことに長く気付けな...
* こめんと欄
#comment
ページ名: