a25_kharcs6
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* kharcs #6
-(by [[K]], 2025.07.21)
** (0) これはなに?
-(kharcsページは、kharc開発でわかったことを整理して説明...
-今回説明したいこと: kccに300行ほど書き足したら、OSECPU-...
--今調べたら、OSECPU-VMでは高密度バイトコードをほどくだけ...
--何なのこの違い・・・。
** (1)
-どのくらい高密度?
|mandel|RIGHT:91バイト|OSECPU-VMでは109バイト|
|3dwave|RIGHT:128バイト|比較対象なし|
|kcube|RIGHT:421バイト|OSASK版では1393バイト|
-どのくらい高速?(mandelで比較)
|uck(ultra-compact-kharc) mod=3(x86 JITコンパイラ)|RIGHT:...
|uck mod=1(CPUに依存しないバイトコードインタプリタ)|RIGHT...
|OSECPU-VM|RIGHT:689秒|RIGHT:60.9倍|
---なぜOSECPU-VMがこんなに遅いのか調べたら、hh4をデコード...
-このプログラムが91バイトになりました(mandel):
#include "kharc.h"
void main()
{
int w, x, y; w = openWin(1024, 768);
for (y = 0; y < 768; y++) {
for (x = 0; x < 1024; x++) {
int sn, sx, sy, n, c, cx, cy, zx, zy, xx, yy; sn =...
for (sx = 0; sx < 4; sx++) {
cx = (x * 4 + sx) * 28 + 4673536;
for (sy = 0; sy < 4; sy++) {
cy = (y * 4 + sy) * 28 + 124928;
zx = zy = 0;
for (n = 0; n < 447; n++) {
xx = (zx * zy) >> 24; // ここは64bit計算が必...
yy = (zy * zy) >> 24; // ここは64bit計算が必...
if (xx + yy > 0x4000000) break;
zy = (zx * zy) > 23; // ここは64bit計算が必要.
zy = zy - cy;
zx = xx + cx - yy;
}
sn = sn + n;
}
}
n = sn >> 4; c = n * 0x100;
if (n >= 256) {
c = 0;
if (n < 447) {
c = 0xfe01 - n;
}
}
setPix(w, x, y, c * 0x100);
}
}
wait(-1);
}
-(以下編集中)
終了行:
* kharcs #6
-(by [[K]], 2025.07.21)
** (0) これはなに?
-(kharcsページは、kharc開発でわかったことを整理して説明...
-今回説明したいこと: kccに300行ほど書き足したら、OSECPU-...
--今調べたら、OSECPU-VMでは高密度バイトコードをほどくだけ...
--何なのこの違い・・・。
** (1)
-どのくらい高密度?
|mandel|RIGHT:91バイト|OSECPU-VMでは109バイト|
|3dwave|RIGHT:128バイト|比較対象なし|
|kcube|RIGHT:421バイト|OSASK版では1393バイト|
-どのくらい高速?(mandelで比較)
|uck(ultra-compact-kharc) mod=3(x86 JITコンパイラ)|RIGHT:...
|uck mod=1(CPUに依存しないバイトコードインタプリタ)|RIGHT...
|OSECPU-VM|RIGHT:689秒|RIGHT:60.9倍|
---なぜOSECPU-VMがこんなに遅いのか調べたら、hh4をデコード...
-このプログラムが91バイトになりました(mandel):
#include "kharc.h"
void main()
{
int w, x, y; w = openWin(1024, 768);
for (y = 0; y < 768; y++) {
for (x = 0; x < 1024; x++) {
int sn, sx, sy, n, c, cx, cy, zx, zy, xx, yy; sn =...
for (sx = 0; sx < 4; sx++) {
cx = (x * 4 + sx) * 28 + 4673536;
for (sy = 0; sy < 4; sy++) {
cy = (y * 4 + sy) * 28 + 124928;
zx = zy = 0;
for (n = 0; n < 447; n++) {
xx = (zx * zy) >> 24; // ここは64bit計算が必...
yy = (zy * zy) >> 24; // ここは64bit計算が必...
if (xx + yy > 0x4000000) break;
zy = (zx * zy) > 23; // ここは64bit計算が必要.
zy = zy - cy;
zx = xx + cx - yy;
}
sn = sn + n;
}
}
n = sn >> 4; c = n * 0x100;
if (n >= 256) {
c = 0;
if (n < 447) {
c = 0xfe01 - n;
}
}
setPix(w, x, y, c * 0x100);
}
}
wait(-1);
}
-(以下編集中)
ページ名: