吉田/日誌/2009-03-06
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[吉田>吉田]]/[[日誌>吉田/日誌]]
&size(18){にゃ。};
>''[[パルテノンなアレ>第14回ASICデザインコンテスト]]''
現状改良案(2009年3月6日-14:32)
-[[復習と改良案(Pico16o)>吉田/覚書/復習と改良案(Pico16o)]]
--コンパイラを暫定パイプライン仕様にするつもりだったがハードの方で分岐命令時遅延機能が付いていたため今のところ要らなくなった、のか?
---暫定パイプライン仕様とは、分岐命令時アホのようにnopを吐くようにすることである。
-コンパイラ側で乗、除算処理を可能にしてみる。
--シフト演算でなんとか。定数乗除はともかく変数乗除がなー。
-メモリが8bitまでしか認識しないというか処理してくれないので16bit拡張を要請。
--8bitだとコード肥大化時に無限ループ突入。
-ループと再帰の展開。
--
今日の足掻き(主に体調的な意味で)
-マスクさえあれば無問題。
今日の成果。
- 変数と定数の乗算を完成。定数同士は畳み込みで。除算もそうだが変数同士の計算がメドい。 -- &new{2009-03-06 (金) 19:33:04};
- 即値ならともかくメモリに書き込まれた値はコンパイラ上ではもう読めない。 -- &new{2009-03-06 (金) 19:49:02};
--判るのはインデックス(メモリアドレス)まで。
- なにげに「変数 演算子 定数(畳み込み)」と「定数 演算子 変数」が二者択一になっててブルー。 -- &new{2009-03-06 (金) 21:30:49};
- 動かないことはわかっている。退避領域が乏しいのが辛い。 -- &new{2009-03-06 (金) 21:38:10};
comment("乗算(変数同士)");
/*
comment("各桁計算の後スタックストア");
printf("L%03d:\n", lbl1 = lbl++);
binst("beqz", reg, lbl2 = lbl++);
stinst(0,reg);
iinst("andi", reg, 0x1);
binst("beqz", reg, lbl3 = lbl++);
iinst("subi", 6, 1);
stinst(6,regx);
printf("L%03d:\n", lbl3);
ldinst(reg,0);
rinst2("sl", regx, regx);
rinst2("sr", reg, reg);
jinst("jmp", lbl1);
printf("L%03d:\n", lbl2);
comment("計算終了後スタックから呼び出して重加算");
iinst("ldli", regx, 127);
rinst2("sub", regx, 6);
binst("beqz", regx, lbl1 = lbl++);
ldinst(regx, 6);
iinst("addi", 6, 1);
rinst2("add", reg, regx);
jinst("jmp", lbl2);
printf("L%03d:\n", lbl1);
reg_table_clear();
*/
______________________________________________________________________
#comment
終了行:
[[吉田>吉田]]/[[日誌>吉田/日誌]]
&size(18){にゃ。};
>''[[パルテノンなアレ>第14回ASICデザインコンテスト]]''
現状改良案(2009年3月6日-14:32)
-[[復習と改良案(Pico16o)>吉田/覚書/復習と改良案(Pico16o)]]
--コンパイラを暫定パイプライン仕様にするつもりだったがハードの方で分岐命令時遅延機能が付いていたため今のところ要らなくなった、のか?
---暫定パイプライン仕様とは、分岐命令時アホのようにnopを吐くようにすることである。
-コンパイラ側で乗、除算処理を可能にしてみる。
--シフト演算でなんとか。定数乗除はともかく変数乗除がなー。
-メモリが8bitまでしか認識しないというか処理してくれないので16bit拡張を要請。
--8bitだとコード肥大化時に無限ループ突入。
-ループと再帰の展開。
--
今日の足掻き(主に体調的な意味で)
-マスクさえあれば無問題。
今日の成果。
- 変数と定数の乗算を完成。定数同士は畳み込みで。除算もそうだが変数同士の計算がメドい。 -- &new{2009-03-06 (金) 19:33:04};
- 即値ならともかくメモリに書き込まれた値はコンパイラ上ではもう読めない。 -- &new{2009-03-06 (金) 19:49:02};
--判るのはインデックス(メモリアドレス)まで。
- なにげに「変数 演算子 定数(畳み込み)」と「定数 演算子 変数」が二者択一になっててブルー。 -- &new{2009-03-06 (金) 21:30:49};
- 動かないことはわかっている。退避領域が乏しいのが辛い。 -- &new{2009-03-06 (金) 21:38:10};
comment("乗算(変数同士)");
/*
comment("各桁計算の後スタックストア");
printf("L%03d:\n", lbl1 = lbl++);
binst("beqz", reg, lbl2 = lbl++);
stinst(0,reg);
iinst("andi", reg, 0x1);
binst("beqz", reg, lbl3 = lbl++);
iinst("subi", 6, 1);
stinst(6,regx);
printf("L%03d:\n", lbl3);
ldinst(reg,0);
rinst2("sl", regx, regx);
rinst2("sr", reg, reg);
jinst("jmp", lbl1);
printf("L%03d:\n", lbl2);
comment("計算終了後スタックから呼び出して重加算");
iinst("ldli", regx, 127);
rinst2("sub", regx, 6);
binst("beqz", regx, lbl1 = lbl++);
ldinst(regx, 6);
iinst("addi", 6, 1);
rinst2("add", reg, regx);
jinst("jmp", lbl2);
printf("L%03d:\n", lbl1);
reg_table_clear();
*/
______________________________________________________________________
#comment
ページ名: