memo0010
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Kの開発メモ #0010
-(by [[K]], 2014.09.16)
-ここは川合の開発の進捗などをレポートするところです。
** 2014.09.16 Tue
-ひさしぶりの近況を。
-フロントエンドコードをもっと小さくしたくて、ついにレンジ...
** 2014.10.01 Wed
-このサイトのトップページのアクセス数がすごいです。たぶん...
** 2015.11.13 Fri
-rev3の構想があるのですが、まだ着手できていません。
-で、rev3にとりかかると大変なので、まずはrev2のままで、簡...
-先日、OSECPUアプリで円周率の計算プログラムを書いてみまし...
05 E2 27 88 17 D7 84 00 02 11 1A 60 03 03 59 70
00 32 4A 21 D6 A0 45 10 60 20 01 46 89 0A 20
0000: 05e2 バイナリシグネチャ
0004: 2_78817d78400_0 R00 = 400000000;
0011: 2_1_1 R01 = 1;
0014: 1 label:
0015: a6_0_0_3 R03 = R00 / R01;
001a: 0_3_5 R02 += R03;
001d: 97_0_0 R00 = 0 - R00;
0021: 0_3_2 R01 += 2;
0024: 4_a2_1_d6a_0 if (R01 < 0x800000...
002c: 4_5_1_0_6_0200_1_4_6_89_0_A2 R02を10進数でコン...
-このプログラムを書いて思ったのは、まず数値の出力にかなり...
-また、定数400000000の扱いも不満です。10のベキ数をうまく...
-ということでVM側を対応させました。以下の21バイトのバイナ...
05 E2 2D 5F 45 02 11 1A 60 03 03 59 70 00 32 4A
21 D6 A0 DF D2
0000: 05e2 バイナリシグネチャ
0004: 2_d5f45_0 R00 = 400000000;
000b: 2_1_1 R01 = 1;
000e: 1 label:
000f: a6_0_0_3 R03 = R00 / R01;
0014: 0_3_5 R02 += R03;
0017: 97_0_0 R00 = 0 - R00;
001b: 0_3_2 R01 += 2;
001e: 4_a2_1_d6a_0 if (R01 < 0x800000...
0026: dfd_2 R02を10進数でコン...
-ついでにこんなのもやりました。0から100までをスペースで区...
05 E2 6C 65 0D FD 05 16 40 (9バイト)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
-区切りのスペースを省略してもいいのならもっと小さくできま...
05 E2 6C 65 0D FD (6バイト)
01234567891011121314151617181920212223242526272829303132...
-0から100までの和を計算。
05 E2 6C 65 00 15 87 DF D1 (9バイト)
5050
** 2015.11.14 Sat
-フロントエンドコードのプレフィクス4について考える。
--プレフィクス4がもしなかったらこうなる。
---opeが4ビット:7個(0~6)
---opeが8ビット:57個(87~bf)
---opeが12ビット:448個(cc0~dff)
--プレフィクス4があるとこうなる(rev1, rev2)。
---opeが4ビット:6個(0~3, 5~6)
---opeが8ビット:63個(57+6)
---opeが12ビット:505個(448+57)
--なるほど、4ビット命令をひとつ犠牲にした代わりに、8ビッ...
--これを逆に考えれば、8ビット命令を6つ12ビット側に追い出...
** 2015.11.16 Mon
-for構文のcontinue周りを改良していたんだな。それに気づけ...
--continue0を使って解決。
-円周率を求めるプログラムを少し改良しました。これで20バイ...
0000: 05e2 バイナリシグネチャ
0004: 2_1_0 R00 = 1;
0007: 2_d5f45_1 R01 = 400000000;
0014: 1 do {
0015: a6_1_1_3 R03 = R01 / R00;
001a: 0_3_5 R02 += R03;
001d: 97_3_0 R01 = 0 - R01;
0021: 0_0_2 R00 += 2;
0024: 4_a1_3_0_0 if (R03 != 0) ...
002a: }
002a: dfd_3 R02を10進数でコン...
--このプログラムの隠れたポイントは、もしR00~R03が256ビッ...
-今まで、命令コード長さは、[[K]]の勘だけで調整されてきま...
** 2015.11.19 Thu
-OSECPU-VMはアプリが非常に小さくなる傾向があります。まあ...
-可逆圧縮の研究の世界では、主にデータの圧縮に主眼を置いて...
-ということで、コードが小さくなることそのものは、あまり大...
-しかし一方で、コードも結局は作業手順を記した「データ」で...
-たとえばwindows用に書かれた2560バイトのインベーダゲーム...
-そしてその過程で、きっとコードの圧縮に限定されないような...
-それは今の私の仕事ではないですが、でも誰もやらないなら私...
-今はとにかくコードを限界まで究極に小さくすることに集中し...
** 2015.11.26 Thu
-OSECPU-VMには api_malloc_initInt() という命令があって、...
* こめんと欄
-この情報は有益!機会を見つけて反映させなければ。 https:/...
#comment
終了行:
* Kの開発メモ #0010
-(by [[K]], 2014.09.16)
-ここは川合の開発の進捗などをレポートするところです。
** 2014.09.16 Tue
-ひさしぶりの近況を。
-フロントエンドコードをもっと小さくしたくて、ついにレンジ...
** 2014.10.01 Wed
-このサイトのトップページのアクセス数がすごいです。たぶん...
** 2015.11.13 Fri
-rev3の構想があるのですが、まだ着手できていません。
-で、rev3にとりかかると大変なので、まずはrev2のままで、簡...
-先日、OSECPUアプリで円周率の計算プログラムを書いてみまし...
05 E2 27 88 17 D7 84 00 02 11 1A 60 03 03 59 70
00 32 4A 21 D6 A0 45 10 60 20 01 46 89 0A 20
0000: 05e2 バイナリシグネチャ
0004: 2_78817d78400_0 R00 = 400000000;
0011: 2_1_1 R01 = 1;
0014: 1 label:
0015: a6_0_0_3 R03 = R00 / R01;
001a: 0_3_5 R02 += R03;
001d: 97_0_0 R00 = 0 - R00;
0021: 0_3_2 R01 += 2;
0024: 4_a2_1_d6a_0 if (R01 < 0x800000...
002c: 4_5_1_0_6_0200_1_4_6_89_0_A2 R02を10進数でコン...
-このプログラムを書いて思ったのは、まず数値の出力にかなり...
-また、定数400000000の扱いも不満です。10のベキ数をうまく...
-ということでVM側を対応させました。以下の21バイトのバイナ...
05 E2 2D 5F 45 02 11 1A 60 03 03 59 70 00 32 4A
21 D6 A0 DF D2
0000: 05e2 バイナリシグネチャ
0004: 2_d5f45_0 R00 = 400000000;
000b: 2_1_1 R01 = 1;
000e: 1 label:
000f: a6_0_0_3 R03 = R00 / R01;
0014: 0_3_5 R02 += R03;
0017: 97_0_0 R00 = 0 - R00;
001b: 0_3_2 R01 += 2;
001e: 4_a2_1_d6a_0 if (R01 < 0x800000...
0026: dfd_2 R02を10進数でコン...
-ついでにこんなのもやりました。0から100までをスペースで区...
05 E2 6C 65 0D FD 05 16 40 (9バイト)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
-区切りのスペースを省略してもいいのならもっと小さくできま...
05 E2 6C 65 0D FD (6バイト)
01234567891011121314151617181920212223242526272829303132...
-0から100までの和を計算。
05 E2 6C 65 00 15 87 DF D1 (9バイト)
5050
** 2015.11.14 Sat
-フロントエンドコードのプレフィクス4について考える。
--プレフィクス4がもしなかったらこうなる。
---opeが4ビット:7個(0~6)
---opeが8ビット:57個(87~bf)
---opeが12ビット:448個(cc0~dff)
--プレフィクス4があるとこうなる(rev1, rev2)。
---opeが4ビット:6個(0~3, 5~6)
---opeが8ビット:63個(57+6)
---opeが12ビット:505個(448+57)
--なるほど、4ビット命令をひとつ犠牲にした代わりに、8ビッ...
--これを逆に考えれば、8ビット命令を6つ12ビット側に追い出...
** 2015.11.16 Mon
-for構文のcontinue周りを改良していたんだな。それに気づけ...
--continue0を使って解決。
-円周率を求めるプログラムを少し改良しました。これで20バイ...
0000: 05e2 バイナリシグネチャ
0004: 2_1_0 R00 = 1;
0007: 2_d5f45_1 R01 = 400000000;
0014: 1 do {
0015: a6_1_1_3 R03 = R01 / R00;
001a: 0_3_5 R02 += R03;
001d: 97_3_0 R01 = 0 - R01;
0021: 0_0_2 R00 += 2;
0024: 4_a1_3_0_0 if (R03 != 0) ...
002a: }
002a: dfd_3 R02を10進数でコン...
--このプログラムの隠れたポイントは、もしR00~R03が256ビッ...
-今まで、命令コード長さは、[[K]]の勘だけで調整されてきま...
** 2015.11.19 Thu
-OSECPU-VMはアプリが非常に小さくなる傾向があります。まあ...
-可逆圧縮の研究の世界では、主にデータの圧縮に主眼を置いて...
-ということで、コードが小さくなることそのものは、あまり大...
-しかし一方で、コードも結局は作業手順を記した「データ」で...
-たとえばwindows用に書かれた2560バイトのインベーダゲーム...
-そしてその過程で、きっとコードの圧縮に限定されないような...
-それは今の私の仕事ではないですが、でも誰もやらないなら私...
-今はとにかくコードを限界まで究極に小さくすることに集中し...
** 2015.11.26 Thu
-OSECPU-VMには api_malloc_initInt() という命令があって、...
* こめんと欄
-この情報は有益!機会を見つけて反映させなければ。 https:/...
#comment
ページ名: