memo0003
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* Kの開発メモ #0003
-(by [[K]], 2013.04.11)
-ここは川合の開発の進捗などをレポートするところです。
--当初はその予定だったが、今ではむしろ主たる目的は[[K]]の...
** 2013.04.11 Thu
-とりあえずosecpu.cを少し整理した。1255行→1188行。
-スタックを実装した。再帰を使った階乗計算をしてみた。うま...
--osecpu.cはまた増えて1261行に。
-そろそろセキュリティ機能をつけ始めるべきだよな・・・。
-まあまずはエラーになった箇所を報告する方法を検討中。
--まあこんな感じかなというところまではできた。
-今日の成果。
--http://osecpu.osask.jp/download/osecpu019a.zip
** 2013.04.12 Fri
-(1) osecpu019aはいろいろとダメなところがいっぱいあった。...
--でも方向性としては悪くない。
-ダメなところリスト:
--行番号をエラーレポートに含めるアイデアはいいけど、行番...
--スタックの仕様がよくない。暫定にしてもよくない。ただま...
-(2) lbstkをバージョンアップすることで、行番号の問題は解...
-(3) やっぱりASKA的なものがほしい。つまりアセンブラではな...
--作ったぞー。この程度までならできる。
R01 = 0x1234567;
R02 = 2;
R03 = 3;
R00 = R02 + R03;
--こんなのもできた。
#include "osecpu_asm.h"
OSECPU_HEADER();
#define LMEMPP(reg, typ, preg) LMEM(reg, typ, preg); DB(...
#define SMEMPP(reg, typ, preg) SMEM(reg, typ, preg); DB(...
R04 = 0x100; R06 = 256; R07 = 256; PCALL(P1B); // op...
R11 = 0; // y
LOOP(1, 0); // CONTINUEを使う回数, BREAKを使う回数.
R10 = 0; // x
LOOP(1, 0); // CONTINUEを使う回数, BREAKを使う回...
R00 = R10 << 16;
R01 = R11 << 8;
R00 += R01; // 00xxyy00
SMEMPP(R00, T_UINT32, P04);
R10++;
CMPIJNE(R10, 256, CONTINUE);
ENDLOOP0(); // BREAKを使わない場合用、省略可能.
R11++;
CMPIJNE(R11, 256, CONTINUE);
ENDLOOP0(); // BREAKを使わない場合用、省略可能.
R04 = 0x101; R06 = 256; R07 = 256; R08 = 0; R09 = 0;...
R04 = 0x102; R05 = 10000; PCALL(P1B); // sleep(10.00...
--この先は、識別子の処理を書いてからかなー。
int32s x == R00, y == R01;
x += y;
--とかがやりたい。
-(4) 今日の成果。
--http://osecpu.osask.jp/download/osecpu020a.zip
--http://osecpu.osask.jp/download/osecpu021a.zip
** 2013.04.13 Sat
-現在考えているとりあえずの理想形:
include("osecpu_h.ask");
int32u *p:P10;
int32s x:R10, y:R11;
p = sys_openWin(256, 256);
for (y = 0; y < 256; y++) {
for (x = 0; x < 256; x++) {
*p++ = (x << 16) + (y << 8);
}
}
sys_flushWin(256, 256, 0, 0);
sys_sleep(10000); // 10.000sec
-これなら結構読みやすいはず。高級言語だといっても信じる?...
-C言語みたいだけど、いろいろと微妙に違う仕様について。
--forの中身が1文しかなくても、{ }は省略できない。
--forの最初の条件比較は省略される。つまり不成立でも一度は...
---そういう意味ではdo-whileに近い。
--for文のなかでcontinueを使うことはできるが、その場合、更...
--C言語との挙動の違いが気になるのなら、更新式や条件式を書...
--複雑すぎる式は計算できない。
--&&や||は使わない。&や|で代用する。つまり|で左辺値が成立...
---両辺値がそろってはじめてANDやOR演算をする仕様なので。
** 2013.04.15 Mon
-今日もアプリ開発環境の整備を中心に。
-askaとlbstkは統合してosectolsというツールになりました。
--共通する処理が多かったので一つにしたほうが作りやすいと...
--(今夜アップロード予定)
--http://osecpu.osask.jp/download/osecpu022a.zip
-さらにosectolsに機能を増やして、naskがなくてもアプリが作...
--逆ポーランド法を少しだけ書いたので、そのテストも兼ねて...
--naskや第二世代OSASKの同梱をやめたので、アーカイブが一気...
---osecpu.exe : 9.0KB
---osectols.exe : 8.0KB
--この調子で頑張ったら、2013.04.13の理想形をサポートして...
--でもでも、C99をまともにサポートして行数が長くなるよりも...
---まあ都合のいいいいわけだけど(苦笑)。
--いや待て、僕はプリプロセッサをGCC任せにしているじゃない...
--(今夜アップロード予定)
--http://osecpu.osask.jp/download/osecpu023a.zip
** 2013.04.16 Tue
-osecpu023の逆ポーランド変換は適当すぎた。反省中。以下の...
--http://www.gg.e-mansion.com/~kkatoh/program/novel2/nove...
--http://ja.wikipedia.org/wiki/%E6%93%8D%E8%BB%8A%E5%A0%B...
-今はアセンブラのためにプリプロセッサを使っていますが、こ...
--そしてosectolsをOSECPUアプリに移植すれば、完璧というわ...
-今日は開発時間が10分くらいしかなかったので、リリースはな...
** 2013.04.17 Wed
-R00 = R10 << 16 | R11 << 8; がコンパイルできるようにな...
--SHLI(R00,R10,0x10);SHLI(R01,R11,0x8);OR(R00,R00,R01);
--R00とR01をテンポラリに使ってくれています。式に余計なか...
--そのほかのコンパイル例:
R10 = (R11 + R12 + R13); → ADD(R00,R11,R12);ADD(R10...
R14 = 1 + 2 + 3; → LIMM(R14,0x6);
R15 = 2 * R10 + 1; → MULI(R00,R10,0x2);ADDI(R...
--これだけできても、osectols.exeはまだ9.5KBだぜー。いい感...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu024a.zip
** 2013.04.18 Thu
-osectolsだけで(つまりGCCのプリプロセッサを使わなくても...
--しまった __LINE__ マクロのことを忘れていた・・・これも...
-今日の成果:
--昨日がんばりすぎて今日はゆっくりペース。
--http://osecpu.osask.jp/download/osecpu025a.zip
-プリプロセッサのosectolsへの取り込みは後回しにしよう。今...
-そのほか、今後やっていきたいと思っていることの一覧:
--(順番は優先順位でも着手予定順序でもなく、ただの思いつ...
--セキュリティ部分を仕上げる → これは大事、OSECPUとして必...
---無限ループの自動停止なども
--DLLのサポート → これは簡単だけど応用が利くし、セキュリ...
--任意のバイトコード列を受け入れてJITコンパイルして即時実...
---これがあると高速なインタプリタをOSECPU上で作れるように...
--構造体のサポート → これができないとプログラムが書きにくい
--シェルを作る、OSECPUアプリとして → これでやっと単なるVM...
--osectolsなどのアプリ開発ツールをOSECPUアプリとして書き...
--APIをまともにする
--テキストエディタもOSECPUアプリとして開発する、ここまで...
** 2013.04.19 Fri
-(1) 昨日書いたシェルについてちょっと書いておきます。
--シェルができると、たとえばプログラムの実行中に、変数の...
---書き換えてもいいです。
--一度停止させて再開させることもできます。状態の保存もで...
--シェルをOSECPUアプリとして開発するのは、osecpu.exe以外...
-(2) OSECPUにはROLとかRORのような、ローテイト命令がありま...
--まずローテイト命令は、いくつかのテンポラリレジスタと普...
--次にローテイト命令は使用頻度が低いです。
--さらにローテイト命令はレジスタの幅に敏感な命令です。32b...
---OSECPUでは整数レジスタが少なくとも32bitあることは保証...
-(3) OSECPUでは命令セットをできるだけ小さくしています。
--これはosecpu.exeの移植をしやすくするためです。バックエ...
--以下に、不採用になった命令の代替方法を書いておきます。
NOT(a,b); → XOR(a,b,-1);
NEG(a,b); → SUB(a,0,b); or MUL(a,b,-1);
SHR(a,b,1); → SAR(a,b,1); AND(a,a,0x7fffffff);
SHR(a,b,c); → SAR(a,b,1); AND(a,a,0x7fffffff); SAR(a,a,c...
多倍長系の命令 → レジスタの下位16bitを演算に利用する、上...
それで任意のビット長を16bitで分割して演算していけば...
符号なしの大小比較 → 32bit符号なし整数の比較は、もしその...
多倍長演算で48bit符号付き整数に拡張してやってくださ...
--即値を演算命令で指定できずにR3Fレジスタに一度代入すると...
--即値も32bitしかサポートしていません。
--演算命令で2オペランド型をサポートしていません。
--使用頻度の高い、INCやDECも用意していません。
--メモリへのアクセス命令も非常に限定されています。
--これらもすべて命令セットを単純にするために選択された手...
-(4) for文ができた!
for (R11 = 0; R11 < 256; R11++) { // y
for (R10 = 0; R10 < 256; R10++) { // x
R00 = R10 << 16 | R11 << 8; // 00xxyy00
SMEMPP(R00, T_UINT32, P04);
}
}
--現在osectols.exeは12.5KB。
-今日の成果:
--http://osecpu.osask.jp/download/osecpu026a.zip
--http://osecpu.osask.jp/download/osecpu027a.zip
-(5) 符号なしの大小比較 → わざわざ多倍長演算する必要なか...
--符号なしで a < b なのかどうかを判定する場合:
--c = a ^ b; を計算して、このcの符号を確認する。
--cが負の場合、aとbはMSBが異なるということだから、符号あ...
--cが0以上の場合、aとbのMSBは同じ。だから (a > 0 && a < b...
-(6) 2013.04.13の理想形のための残りの作業:
--break, continue, gotoへの対応。
--if文を使えるようにする。
--変数名を使えるようにする。
--メモリアクセスに対応する。
--関数呼び出しに対応する。
** 2013.04.20 Sat
-(1) 実レジスタ活用([[page0027]])を書いた。・・・少しos...
** 2013.04.21 Sun
-(1) やっと実レジスタ化の実験ができた。効果は大きい。Atom...
osecpu027a>osecpu app0002.ose
time: JITC=0.000[sec], exec=53.953[sec]
size: OSECPU=106, native=74
osecpu028a>osecpu app0002.ose
time: JITC=0.000[sec], exec=21.593[sec]
size: OSECPU=106, native=67
--2.5倍速だ!・・・なんか中では普通に実レジスタが使われる...
---DECしてJNZみたいな技は使えないけどね(それをやりたけれ...
--でもコードサイズ(native)があまり変わっていないような...
---あっているみたいだ。まずosecpu028aでは、最初に仮想レジ...
-(2) DECしてJNZみたいな技は使えないって書いたけど、使える...
--JITCするときに、フラグを変化させうる命令を出力した場合...
--app0015.ask:
for (R02 = 1000000; R02 != 0; R02--) { // j:R02
R01 = 0;
for (R00 = 10000; R00 != -1; R00--) { // sum:R01, i:...
R01 += R00;
}
}
time: JITC=0.000[sec], exec=21.906[sec]
size: OSECPU=106, native=55
--app0016.ask:
for (R02 = 1000000; R02 != 0; R02--) { // j:R02
R01 = 0;
for (R00 = 10000; R00 != 0; R00--) { // sum:R01, i:R...
R01 += R00;
}
}
time: JITC=0.000[sec], exec=15.531[sec]
size: OSECPU=106, native=55
--両者の違いはループ時の比較が0との比較になっているかどう...
--0と-1での違いは、約1.0001倍の性能差しかないはずなのに、...
--両者のnativeのサイズが同じになってしまっているけど、こ...
--自分で作っておいて言うのもなんだけど、というか自画自賛...
---SSEとかやりたいのならこの限りじゃないかもしれないけど。
---でもここまでできて、かつ他のCPUにも移植可能って、かな...
--ちなみにうちにはPCがいっぱいあるので(笑)、別のPCでも...
-(3) C言語と比べてどっちがいいか対決(笑):
--OSECPUはosecpu.exeさえ移植すればどのCPUでも使えるという...
--まず移植の容易さだけど、osecpu.exeの移植は結構簡単だと...
--OSECPUのASKAはC言語っぽい外見をしているものの、結局はア...
---OSECPUでは、osecpu028aのように実レジスタとの対応を決め...
--GCCには優秀な最適化があって、OSECPU-ASKAにはそれがない...
--ということでOSECPUの勝ちだー。
-(4) 今日の成果:
--http://osecpu.osask.jp/download/osecpu028a.zip
** 2013.04.22 Mon
-Core_i7-2600(3.40GHz)で実験してみたら、app0016はexec=2.7...
-P02とP03の実レジスタ化もちょっと作ったけど、app0011がバ...
--http://osecpu.osask.jp/download/osecpu029a.zip
--というかapp0011に関して言えば、osecpu028aでも動かなくな...
-やっとバグが取れた。
--http://osecpu.osask.jp/download/osecpu030a.zip
** こめんと欄
#comment
終了行:
* Kの開発メモ #0003
-(by [[K]], 2013.04.11)
-ここは川合の開発の進捗などをレポートするところです。
--当初はその予定だったが、今ではむしろ主たる目的は[[K]]の...
** 2013.04.11 Thu
-とりあえずosecpu.cを少し整理した。1255行→1188行。
-スタックを実装した。再帰を使った階乗計算をしてみた。うま...
--osecpu.cはまた増えて1261行に。
-そろそろセキュリティ機能をつけ始めるべきだよな・・・。
-まあまずはエラーになった箇所を報告する方法を検討中。
--まあこんな感じかなというところまではできた。
-今日の成果。
--http://osecpu.osask.jp/download/osecpu019a.zip
** 2013.04.12 Fri
-(1) osecpu019aはいろいろとダメなところがいっぱいあった。...
--でも方向性としては悪くない。
-ダメなところリスト:
--行番号をエラーレポートに含めるアイデアはいいけど、行番...
--スタックの仕様がよくない。暫定にしてもよくない。ただま...
-(2) lbstkをバージョンアップすることで、行番号の問題は解...
-(3) やっぱりASKA的なものがほしい。つまりアセンブラではな...
--作ったぞー。この程度までならできる。
R01 = 0x1234567;
R02 = 2;
R03 = 3;
R00 = R02 + R03;
--こんなのもできた。
#include "osecpu_asm.h"
OSECPU_HEADER();
#define LMEMPP(reg, typ, preg) LMEM(reg, typ, preg); DB(...
#define SMEMPP(reg, typ, preg) SMEM(reg, typ, preg); DB(...
R04 = 0x100; R06 = 256; R07 = 256; PCALL(P1B); // op...
R11 = 0; // y
LOOP(1, 0); // CONTINUEを使う回数, BREAKを使う回数.
R10 = 0; // x
LOOP(1, 0); // CONTINUEを使う回数, BREAKを使う回...
R00 = R10 << 16;
R01 = R11 << 8;
R00 += R01; // 00xxyy00
SMEMPP(R00, T_UINT32, P04);
R10++;
CMPIJNE(R10, 256, CONTINUE);
ENDLOOP0(); // BREAKを使わない場合用、省略可能.
R11++;
CMPIJNE(R11, 256, CONTINUE);
ENDLOOP0(); // BREAKを使わない場合用、省略可能.
R04 = 0x101; R06 = 256; R07 = 256; R08 = 0; R09 = 0;...
R04 = 0x102; R05 = 10000; PCALL(P1B); // sleep(10.00...
--この先は、識別子の処理を書いてからかなー。
int32s x == R00, y == R01;
x += y;
--とかがやりたい。
-(4) 今日の成果。
--http://osecpu.osask.jp/download/osecpu020a.zip
--http://osecpu.osask.jp/download/osecpu021a.zip
** 2013.04.13 Sat
-現在考えているとりあえずの理想形:
include("osecpu_h.ask");
int32u *p:P10;
int32s x:R10, y:R11;
p = sys_openWin(256, 256);
for (y = 0; y < 256; y++) {
for (x = 0; x < 256; x++) {
*p++ = (x << 16) + (y << 8);
}
}
sys_flushWin(256, 256, 0, 0);
sys_sleep(10000); // 10.000sec
-これなら結構読みやすいはず。高級言語だといっても信じる?...
-C言語みたいだけど、いろいろと微妙に違う仕様について。
--forの中身が1文しかなくても、{ }は省略できない。
--forの最初の条件比較は省略される。つまり不成立でも一度は...
---そういう意味ではdo-whileに近い。
--for文のなかでcontinueを使うことはできるが、その場合、更...
--C言語との挙動の違いが気になるのなら、更新式や条件式を書...
--複雑すぎる式は計算できない。
--&&や||は使わない。&や|で代用する。つまり|で左辺値が成立...
---両辺値がそろってはじめてANDやOR演算をする仕様なので。
** 2013.04.15 Mon
-今日もアプリ開発環境の整備を中心に。
-askaとlbstkは統合してosectolsというツールになりました。
--共通する処理が多かったので一つにしたほうが作りやすいと...
--(今夜アップロード予定)
--http://osecpu.osask.jp/download/osecpu022a.zip
-さらにosectolsに機能を増やして、naskがなくてもアプリが作...
--逆ポーランド法を少しだけ書いたので、そのテストも兼ねて...
--naskや第二世代OSASKの同梱をやめたので、アーカイブが一気...
---osecpu.exe : 9.0KB
---osectols.exe : 8.0KB
--この調子で頑張ったら、2013.04.13の理想形をサポートして...
--でもでも、C99をまともにサポートして行数が長くなるよりも...
---まあ都合のいいいいわけだけど(苦笑)。
--いや待て、僕はプリプロセッサをGCC任せにしているじゃない...
--(今夜アップロード予定)
--http://osecpu.osask.jp/download/osecpu023a.zip
** 2013.04.16 Tue
-osecpu023の逆ポーランド変換は適当すぎた。反省中。以下の...
--http://www.gg.e-mansion.com/~kkatoh/program/novel2/nove...
--http://ja.wikipedia.org/wiki/%E6%93%8D%E8%BB%8A%E5%A0%B...
-今はアセンブラのためにプリプロセッサを使っていますが、こ...
--そしてosectolsをOSECPUアプリに移植すれば、完璧というわ...
-今日は開発時間が10分くらいしかなかったので、リリースはな...
** 2013.04.17 Wed
-R00 = R10 << 16 | R11 << 8; がコンパイルできるようにな...
--SHLI(R00,R10,0x10);SHLI(R01,R11,0x8);OR(R00,R00,R01);
--R00とR01をテンポラリに使ってくれています。式に余計なか...
--そのほかのコンパイル例:
R10 = (R11 + R12 + R13); → ADD(R00,R11,R12);ADD(R10...
R14 = 1 + 2 + 3; → LIMM(R14,0x6);
R15 = 2 * R10 + 1; → MULI(R00,R10,0x2);ADDI(R...
--これだけできても、osectols.exeはまだ9.5KBだぜー。いい感...
-今日の成果:
--http://osecpu.osask.jp/download/osecpu024a.zip
** 2013.04.18 Thu
-osectolsだけで(つまりGCCのプリプロセッサを使わなくても...
--しまった __LINE__ マクロのことを忘れていた・・・これも...
-今日の成果:
--昨日がんばりすぎて今日はゆっくりペース。
--http://osecpu.osask.jp/download/osecpu025a.zip
-プリプロセッサのosectolsへの取り込みは後回しにしよう。今...
-そのほか、今後やっていきたいと思っていることの一覧:
--(順番は優先順位でも着手予定順序でもなく、ただの思いつ...
--セキュリティ部分を仕上げる → これは大事、OSECPUとして必...
---無限ループの自動停止なども
--DLLのサポート → これは簡単だけど応用が利くし、セキュリ...
--任意のバイトコード列を受け入れてJITコンパイルして即時実...
---これがあると高速なインタプリタをOSECPU上で作れるように...
--構造体のサポート → これができないとプログラムが書きにくい
--シェルを作る、OSECPUアプリとして → これでやっと単なるVM...
--osectolsなどのアプリ開発ツールをOSECPUアプリとして書き...
--APIをまともにする
--テキストエディタもOSECPUアプリとして開発する、ここまで...
** 2013.04.19 Fri
-(1) 昨日書いたシェルについてちょっと書いておきます。
--シェルができると、たとえばプログラムの実行中に、変数の...
---書き換えてもいいです。
--一度停止させて再開させることもできます。状態の保存もで...
--シェルをOSECPUアプリとして開発するのは、osecpu.exe以外...
-(2) OSECPUにはROLとかRORのような、ローテイト命令がありま...
--まずローテイト命令は、いくつかのテンポラリレジスタと普...
--次にローテイト命令は使用頻度が低いです。
--さらにローテイト命令はレジスタの幅に敏感な命令です。32b...
---OSECPUでは整数レジスタが少なくとも32bitあることは保証...
-(3) OSECPUでは命令セットをできるだけ小さくしています。
--これはosecpu.exeの移植をしやすくするためです。バックエ...
--以下に、不採用になった命令の代替方法を書いておきます。
NOT(a,b); → XOR(a,b,-1);
NEG(a,b); → SUB(a,0,b); or MUL(a,b,-1);
SHR(a,b,1); → SAR(a,b,1); AND(a,a,0x7fffffff);
SHR(a,b,c); → SAR(a,b,1); AND(a,a,0x7fffffff); SAR(a,a,c...
多倍長系の命令 → レジスタの下位16bitを演算に利用する、上...
それで任意のビット長を16bitで分割して演算していけば...
符号なしの大小比較 → 32bit符号なし整数の比較は、もしその...
多倍長演算で48bit符号付き整数に拡張してやってくださ...
--即値を演算命令で指定できずにR3Fレジスタに一度代入すると...
--即値も32bitしかサポートしていません。
--演算命令で2オペランド型をサポートしていません。
--使用頻度の高い、INCやDECも用意していません。
--メモリへのアクセス命令も非常に限定されています。
--これらもすべて命令セットを単純にするために選択された手...
-(4) for文ができた!
for (R11 = 0; R11 < 256; R11++) { // y
for (R10 = 0; R10 < 256; R10++) { // x
R00 = R10 << 16 | R11 << 8; // 00xxyy00
SMEMPP(R00, T_UINT32, P04);
}
}
--現在osectols.exeは12.5KB。
-今日の成果:
--http://osecpu.osask.jp/download/osecpu026a.zip
--http://osecpu.osask.jp/download/osecpu027a.zip
-(5) 符号なしの大小比較 → わざわざ多倍長演算する必要なか...
--符号なしで a < b なのかどうかを判定する場合:
--c = a ^ b; を計算して、このcの符号を確認する。
--cが負の場合、aとbはMSBが異なるということだから、符号あ...
--cが0以上の場合、aとbのMSBは同じ。だから (a > 0 && a < b...
-(6) 2013.04.13の理想形のための残りの作業:
--break, continue, gotoへの対応。
--if文を使えるようにする。
--変数名を使えるようにする。
--メモリアクセスに対応する。
--関数呼び出しに対応する。
** 2013.04.20 Sat
-(1) 実レジスタ活用([[page0027]])を書いた。・・・少しos...
** 2013.04.21 Sun
-(1) やっと実レジスタ化の実験ができた。効果は大きい。Atom...
osecpu027a>osecpu app0002.ose
time: JITC=0.000[sec], exec=53.953[sec]
size: OSECPU=106, native=74
osecpu028a>osecpu app0002.ose
time: JITC=0.000[sec], exec=21.593[sec]
size: OSECPU=106, native=67
--2.5倍速だ!・・・なんか中では普通に実レジスタが使われる...
---DECしてJNZみたいな技は使えないけどね(それをやりたけれ...
--でもコードサイズ(native)があまり変わっていないような...
---あっているみたいだ。まずosecpu028aでは、最初に仮想レジ...
-(2) DECしてJNZみたいな技は使えないって書いたけど、使える...
--JITCするときに、フラグを変化させうる命令を出力した場合...
--app0015.ask:
for (R02 = 1000000; R02 != 0; R02--) { // j:R02
R01 = 0;
for (R00 = 10000; R00 != -1; R00--) { // sum:R01, i:...
R01 += R00;
}
}
time: JITC=0.000[sec], exec=21.906[sec]
size: OSECPU=106, native=55
--app0016.ask:
for (R02 = 1000000; R02 != 0; R02--) { // j:R02
R01 = 0;
for (R00 = 10000; R00 != 0; R00--) { // sum:R01, i:R...
R01 += R00;
}
}
time: JITC=0.000[sec], exec=15.531[sec]
size: OSECPU=106, native=55
--両者の違いはループ時の比較が0との比較になっているかどう...
--0と-1での違いは、約1.0001倍の性能差しかないはずなのに、...
--両者のnativeのサイズが同じになってしまっているけど、こ...
--自分で作っておいて言うのもなんだけど、というか自画自賛...
---SSEとかやりたいのならこの限りじゃないかもしれないけど。
---でもここまでできて、かつ他のCPUにも移植可能って、かな...
--ちなみにうちにはPCがいっぱいあるので(笑)、別のPCでも...
-(3) C言語と比べてどっちがいいか対決(笑):
--OSECPUはosecpu.exeさえ移植すればどのCPUでも使えるという...
--まず移植の容易さだけど、osecpu.exeの移植は結構簡単だと...
--OSECPUのASKAはC言語っぽい外見をしているものの、結局はア...
---OSECPUでは、osecpu028aのように実レジスタとの対応を決め...
--GCCには優秀な最適化があって、OSECPU-ASKAにはそれがない...
--ということでOSECPUの勝ちだー。
-(4) 今日の成果:
--http://osecpu.osask.jp/download/osecpu028a.zip
** 2013.04.22 Mon
-Core_i7-2600(3.40GHz)で実験してみたら、app0016はexec=2.7...
-P02とP03の実レジスタ化もちょっと作ったけど、app0011がバ...
--http://osecpu.osask.jp/download/osecpu029a.zip
--というかapp0011に関して言えば、osecpu028aでも動かなくな...
-やっとバグが取れた。
--http://osecpu.osask.jp/download/osecpu030a.zip
** こめんと欄
#comment
ページ名: