page0031
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* フロントエンドバイトコード #0
-(by [[K]], 2013.04.28)
** はじめに
-OSECPUの主要な作者であるところの[[K]]は、実はとても小さ...
-そのためか、たとえばosecpu.exeのver.0.34は10.5KBでできて...
-さて、osecpu.exeがどんなに小さくできたとしても、OSECPUア...
-とういうことで、それを解決しようと思います。
** 状況確認
-いろいろな改善を施す前に、まず現状を把握しておきましょう...
int32s i:R00, sum:R01, j:R02;
for (j = 1000000; j != 0; j--) {
sum = 0;
for (i = 10000; i != 0; i--) {
sum += i;
}
}
-osecpu034の段階では、このプログラムは102バイトになります...
0202000F4240 010000000000 020100000000 020000002710 0100...
14010100 023F00000001 1500003F 023F00000000
213F003F 043F 030000000002 010000000003 023F00000001 150...
023F00000000 213F023F 043F 030000000000 010000000001
-同じプログラムをx86の32bitで書いたとします。そうすると何...
MOV EDX,1000000
label0:
XOR EAX,EAX
MOV ECX,10000
label1:
ADD EAX,ECX
LOOP label1
DEC EDX
JNZ label0
-19バイトのダンプはこちらです。
BA40420F00 31C0 B910270000 01C8 E2FC 4A 75F2
-102と19を比較すればその差は5.37倍。同じ機能を記述するた...
-言い訳を書いておくと、ver.034までのOSECPUはアプリの機能...
--ちなみに今のバイトコード体系はまさに内部処理向きに作っ...
-内部処理用のバイトコードは「バックエンドコード」と呼ばれ...
-つまり何が言いたいのかというと、フロントエンドとバックエ...
** 現在の案
-今考えているフロントエンドコードでapp0016を書くとこうな...
BC2760F4240 210 BC0742170 941B0 BD0 BD0
-17バイトなら20バイトよりも短いです。1.17倍機能密度が高い...
-ちょっと解説しておくと、こういう対応関係になっています。
BC2760F4240 : 0202000F4240 010000000000
210 : 020100000000
BC0742170 : 020000002710 010000000002
941B0 : 14010100
BD0 : 023F00000001 1500003F 023F00000000 213F003...
BD0 : 023F00000001 1502023F 023F00000000 213F023...
-この変換規則は実はかなり単純なので、これを付与してもosec...
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
終了行:
* フロントエンドバイトコード #0
-(by [[K]], 2013.04.28)
** はじめに
-OSECPUの主要な作者であるところの[[K]]は、実はとても小さ...
-そのためか、たとえばosecpu.exeのver.0.34は10.5KBでできて...
-さて、osecpu.exeがどんなに小さくできたとしても、OSECPUア...
-とういうことで、それを解決しようと思います。
** 状況確認
-いろいろな改善を施す前に、まず現状を把握しておきましょう...
int32s i:R00, sum:R01, j:R02;
for (j = 1000000; j != 0; j--) {
sum = 0;
for (i = 10000; i != 0; i--) {
sum += i;
}
}
-osecpu034の段階では、このプログラムは102バイトになります...
0202000F4240 010000000000 020100000000 020000002710 0100...
14010100 023F00000001 1500003F 023F00000000
213F003F 043F 030000000002 010000000003 023F00000001 150...
023F00000000 213F023F 043F 030000000000 010000000001
-同じプログラムをx86の32bitで書いたとします。そうすると何...
MOV EDX,1000000
label0:
XOR EAX,EAX
MOV ECX,10000
label1:
ADD EAX,ECX
LOOP label1
DEC EDX
JNZ label0
-19バイトのダンプはこちらです。
BA40420F00 31C0 B910270000 01C8 E2FC 4A 75F2
-102と19を比較すればその差は5.37倍。同じ機能を記述するた...
-言い訳を書いておくと、ver.034までのOSECPUはアプリの機能...
--ちなみに今のバイトコード体系はまさに内部処理向きに作っ...
-内部処理用のバイトコードは「バックエンドコード」と呼ばれ...
-つまり何が言いたいのかというと、フロントエンドとバックエ...
** 現在の案
-今考えているフロントエンドコードでapp0016を書くとこうな...
BC2760F4240 210 BC0742170 941B0 BD0 BD0
-17バイトなら20バイトよりも短いです。1.17倍機能密度が高い...
-ちょっと解説しておくと、こういう対応関係になっています。
BC2760F4240 : 0202000F4240 010000000000
210 : 020100000000
BC0742170 : 020000002710 010000000002
941B0 : 14010100
BD0 : 023F00000001 1500003F 023F00000000 213F003...
BD0 : 023F00000001 1502023F 023F00000000 213F023...
-この変換規則は実はかなり単純なので、これを付与してもosec...
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
ページ名: