hikarupsp_FrontEndCode
の編集
http://osecpu.osask.jp/wiki/?hikarupsp_FrontEndCode
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
BracketName
FormattingRules
FrontPage
Fulyn
Fulyn-v2
Fulyn_Samples
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KOR_PIT8254
KWVM.NET
Liva
MANA
MenuBar
OSECPU_FPGA
PG_MANA
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
hikalium
hikarupsp
hikarupsp_ELCHNOS
hikarupsp_ELCHNOS_IDE
hikarupsp_FrontEndCode
hikarupsp_WebCPU-VM
hikarupsp_WebCPU-VM_internal
hikarupsp_study_hh4
impressions
impressions0000
jpag0000
jpag0001
jpag0002
jpag0003
jpag0004
jpag0005
lambdalice
mandel59
members
memo0000
memo0001
memo0002
memo0003
memo0004
memo0005
memo0006
memo0007
memo0008
memo0009
memo0010
osask
osecpu4android
page0000
page0001
page0002
page0003
page0004
page0005
page0006
page0007
page0008
page0009
page0010
page0011
page0012
page0013
page0014
page0015
page0016
page0017
page0018
page0019
page0020
page0021
page0022
page0023
page0024
page0025
page0026
page0027
page0028
page0029
page0030
page0031
page0032
page0033
page0034
page0035
page0036
page0037
page0038
page0039
page0040
page0041
page0042
page0043
page0044
page0045
page0046
page0047
page0048
page0049
page0050
page0051
page0052
page0053
page0054
page0055
page0056
page0057
page0058
page0059
page0060
page0061
page0062
page0063
page0064
page0065
page0066
page0067
page0068
page0069
page0070
page0071
page0072
page0073
page0074
page0075
page0076
page0077
page0078
page0079
page0080
page0081
page0082
page0083
page0084
page0085
page0086
page0087
page0088
page0089
page0090
page0091
page0092
page0093
page0094
page0095
page0096
page0097
page0098
page0099
page0100
page0101
page0102
page0103
page0104
page0105
page0106
page0107
page0108
page0109
pagenames
populars
seccamp2013
seccamp2014
seccamp2017
ttwilb
ttwilb-asmi
yao
*フロントエンドコードをdecoderを使って実行しよう! -[[page0063]]のdecoderを利用すれば、バックエンドコードの実装だけでフロントエンドコード変換もできてしまうらしい! **現状 -実装完了しました! -[[hikarupsp_WebCPU-VM]]に最新の動くデモのURLがあります。 Load->Executeで実行。Breakもできます。StepInもできます。 -%%decoder自体の読み込みはできるようだが、実際にフロントエンドコード(app0023)を変換させると、配列の未定義部分を読みにいってしまう。%% --%%比較命令あたりの実装にミスがあるのが原因?もしくはポインタ周りか%% ***多分バグは直りました! -LMEMで読み込んだ値がfalseの時レジスタを更新しないようにしていたために0を読み込んでもR00に反映されず、decoderの命令解釈ループを終了できないのが原因でした。 -(なぜ終了条件に、実行前にP05に渡した、入力データの終端を使っていないのか少し不思議) -見つかってよかった…かなり時間を消費してしまいました。自分で引き起こしたので自業自得ですが(笑)。 ***できました!! 上記のデモも更新しました!今後はAPIを増やして、付属のアプリケーションをどんどん実行していけるようにしたいです。 **フロントエンドコード動作確認済みのアプリ 以下のUNIXコマンドでテキスト化したものをテキストボックスにペーストしてLoad->Executeで実行できます! od -tx1 -An [FileName] -app0023(bball) *フロントエンドコードを解読しよう! -decoderを使うことになったけれど、フロントエンドコードを自力で読みたい人々のために残しておきます。 **目的 [[WebCPU_VM>http://www17.atpages.jp/hikarupsp/webcpu_vm]](OSECPU-VMのJavaScriptによる実装)でフロントエンドコードを直接実行できるようにするために、バックエンドコードへ変換するための情報を集める。 -[[page0034]][Q0014]で既に変換の方法は示されているのですが、この変換もJavaScriptで実装したいのです…。 **参考になりそうなURL +http://k.osask.jp/klog/?osecpu_0001 +http://osask.sourceforge.jp/w/634.html --hh4エンコードの基本 +[[page0054]] --符号付きhh4エンコードの解説>(3) hh4のエンコードテーブル **現在の予想 -FrontEndCodeは、全体的にhh4エンコードを利用している --しかも特殊形式のhh4を一部使っている?(リンク1を参照) --ただしデータ部分はエンコードされていないみたい… **app0023(bball)の解読 まだ途中です…やっと命令境界がみえてきた!fcodeのおかげです。 :シグネチャ 05e1 :DATA(type:0x03, size:0x20) ae3a0 == 2E 3 20 :データ本体 c4 64 bb 3d a4 1d 81 09 5a 05 35 11 17 2c 07 51 07 77 17 9c 35 b7 5a c3 81 bf a4 ab bb 8b c4 64 6 5 0 8f = 6 5 0 F 88 0 1 0 = 8 0 1 0 88 1 1 0 = 8 1 1 0 4 3 2 6 = 4 3 2 6 6 6 b8 88 = 6 6 38 8 88 2 2 0 = 8 2 2 0 88 3 2 0 = 8 3 2 0 4 95 4 5 aa = 4 15 4 5 2A a5 4 0 1 = 25 4 0 1 4 95 4 bf ac 1 = 4 15 4 3F 2C 1 1 = 1 a5 4 87 2 = 25 4 7 2 4 5 3 85 = 4 5 3 5 1 = 1 ***現状の解析コード ****LoadFrontEndBinaryText**** 2E:DATA(type:0x3, length:0x20); [C464BB3DA41D81095A053511172C07510777179C35B75AC381BFA4ABBB8BC464] 06:LOOP.Begin(R5, initBy:0x0, endUntil:0xF); 08:LMEM(R0, P1, reserved:0x0); 08:LMEM(R1, P1, reserved:0x0); 04-03:PLIMEM(P2, Offset:0x6); 06:LOOP.Begin(R6, initBy:0x38, endUntil:0x8); 08:LMEM(R2, P2, reserved:0x0); 08:LMEM(R3, P2, reserved:0x0); 04-15:SUB(R4, R5, x:0x2A); 25:CMPG(R4, R0, x:0x1); 04-15:SUB(R4, R3F, x:0x2C); 01:LABEL 01:LABEL 25:CMPG(R4, R7, x:0x2); 04-05:03:drawLine(mode:0x5); 01:LABEL ****LoadFrontEndBinaryText End**** ***疑問点メモ -4 95 4 5 aa = 4 15 4 5 2A -4 95 4 bf ac 1 = 4 15 4 3F 2C 1 --どうしてどちらも同じSUB[4-95]なのに引数の数が違うんだ!? -SUBなど三項演算子の第三引数は符号付き拡張整数みたい -符号付きhh4の仕組みがよくわからない…単なる補数表現? **まだ作成中… **コメント欄(間違いの指摘や、情報を知っている方は教えてください!) -おもしろそうなことをはじめましたね!・・・そうですね、符号付き整数についてはhh4の特殊形式と言えるかもしれません。 -- ''K'' SIZE(10){2013-08-17 (土) 21:43:50} -このWebCPU_VMって、もしかしてすでに結構動いていませんか?!すごい!! -- ''K'' SIZE(10){2013-08-17 (土) 21:50:36} -バックエンドはbballが動く最低限の機能は実装しました…でもフロントエンドコードの仕様が難しいです… -- [[hikarupsp]] SIZE(10){2013-08-17 (土) 21:52:59} -きっと5で始まるAPI呼出し命令が難しいんですよね?それ以外はどうですか?何とかなりそうな感じですか? -- ''K'' SIZE(10){2013-08-17 (土) 21:59:03} -[[page0062]]を見るとフロントエンドコードの切れ目が分かると思います。そこから勉強するのが早道かもしれません。 -- ''K'' SIZE(10){2013-08-17 (土) 22:00:30} -fcodeが役に立ってよかった!>まだ途中です…やっと命令境界がみえてきた!fcodeのおかげです。 -- ''K'' SIZE(10){2013-08-17 (土) 22:18:39} -三項演算子は、基本的に第一項と第二項がレジスタで、第三項が拡張符号付き整数です。しかしこれでは、 R04=1-R04;が表現できません。このような時は、とりあえずR04=R3F-R04;のコードを出力した直後に、R3Fに入れたかった整数を拡張符号付き整数で記述します。>どうしてどちらも同じSUB[4-95]なのに引数の数が違うんだ!? -- ''K'' SIZE(10){2013-08-18 (日) 02:34:50} -符号付き整数は、2桁以上なら普通の補数表現です。1桁の場合、7が使えないので、-1がうまく表現できません。ということで、1桁の場合は特別ルールになっています。>符号付きhh4の仕組みがよくわからない…単なる補数表現? -- ''K'' SIZE(10){2013-08-18 (日) 02:38:13} -拡張符号付きhh4は[[page0054]]の(3)が詳しいかも? -- ''K'' SIZE(10){2013-08-18 (日) 03:25:14} -WebCPU_VMの完成度が日に日に上がっている! -- ''K'' SIZE(10){2013-08-19 (月) 23:36:42} -[[page0063]]に参考になりそうなことを書きました! -- ''K'' SIZE(10){2013-08-21 (水) 13:51:41} -すごくがんばっているのが分かるので、できれば少しくらい手伝ってあげたい・・・今は時間がなくてごめんなさい! -- ''K'' SIZE(10){2013-09-12 (木) 00:54:06} -おめでとうございます! >(なぜ終了条件に、実行前にP05に渡した、入力データの終端を使っていないのか少し不思議) ちなみにこれは以前からの手抜きです・・・。 -- ''K'' SIZE(10){2013-09-15 (日) 06:38:43} #comment();
タイムスタンプを変更しない
*フロントエンドコードをdecoderを使って実行しよう! -[[page0063]]のdecoderを利用すれば、バックエンドコードの実装だけでフロントエンドコード変換もできてしまうらしい! **現状 -実装完了しました! -[[hikarupsp_WebCPU-VM]]に最新の動くデモのURLがあります。 Load->Executeで実行。Breakもできます。StepInもできます。 -%%decoder自体の読み込みはできるようだが、実際にフロントエンドコード(app0023)を変換させると、配列の未定義部分を読みにいってしまう。%% --%%比較命令あたりの実装にミスがあるのが原因?もしくはポインタ周りか%% ***多分バグは直りました! -LMEMで読み込んだ値がfalseの時レジスタを更新しないようにしていたために0を読み込んでもR00に反映されず、decoderの命令解釈ループを終了できないのが原因でした。 -(なぜ終了条件に、実行前にP05に渡した、入力データの終端を使っていないのか少し不思議) -見つかってよかった…かなり時間を消費してしまいました。自分で引き起こしたので自業自得ですが(笑)。 ***できました!! 上記のデモも更新しました!今後はAPIを増やして、付属のアプリケーションをどんどん実行していけるようにしたいです。 **フロントエンドコード動作確認済みのアプリ 以下のUNIXコマンドでテキスト化したものをテキストボックスにペーストしてLoad->Executeで実行できます! od -tx1 -An [FileName] -app0023(bball) *フロントエンドコードを解読しよう! -decoderを使うことになったけれど、フロントエンドコードを自力で読みたい人々のために残しておきます。 **目的 [[WebCPU_VM>http://www17.atpages.jp/hikarupsp/webcpu_vm]](OSECPU-VMのJavaScriptによる実装)でフロントエンドコードを直接実行できるようにするために、バックエンドコードへ変換するための情報を集める。 -[[page0034]][Q0014]で既に変換の方法は示されているのですが、この変換もJavaScriptで実装したいのです…。 **参考になりそうなURL +http://k.osask.jp/klog/?osecpu_0001 +http://osask.sourceforge.jp/w/634.html --hh4エンコードの基本 +[[page0054]] --符号付きhh4エンコードの解説>(3) hh4のエンコードテーブル **現在の予想 -FrontEndCodeは、全体的にhh4エンコードを利用している --しかも特殊形式のhh4を一部使っている?(リンク1を参照) --ただしデータ部分はエンコードされていないみたい… **app0023(bball)の解読 まだ途中です…やっと命令境界がみえてきた!fcodeのおかげです。 :シグネチャ 05e1 :DATA(type:0x03, size:0x20) ae3a0 == 2E 3 20 :データ本体 c4 64 bb 3d a4 1d 81 09 5a 05 35 11 17 2c 07 51 07 77 17 9c 35 b7 5a c3 81 bf a4 ab bb 8b c4 64 6 5 0 8f = 6 5 0 F 88 0 1 0 = 8 0 1 0 88 1 1 0 = 8 1 1 0 4 3 2 6 = 4 3 2 6 6 6 b8 88 = 6 6 38 8 88 2 2 0 = 8 2 2 0 88 3 2 0 = 8 3 2 0 4 95 4 5 aa = 4 15 4 5 2A a5 4 0 1 = 25 4 0 1 4 95 4 bf ac 1 = 4 15 4 3F 2C 1 1 = 1 a5 4 87 2 = 25 4 7 2 4 5 3 85 = 4 5 3 5 1 = 1 ***現状の解析コード ****LoadFrontEndBinaryText**** 2E:DATA(type:0x3, length:0x20); [C464BB3DA41D81095A053511172C07510777179C35B75AC381BFA4ABBB8BC464] 06:LOOP.Begin(R5, initBy:0x0, endUntil:0xF); 08:LMEM(R0, P1, reserved:0x0); 08:LMEM(R1, P1, reserved:0x0); 04-03:PLIMEM(P2, Offset:0x6); 06:LOOP.Begin(R6, initBy:0x38, endUntil:0x8); 08:LMEM(R2, P2, reserved:0x0); 08:LMEM(R3, P2, reserved:0x0); 04-15:SUB(R4, R5, x:0x2A); 25:CMPG(R4, R0, x:0x1); 04-15:SUB(R4, R3F, x:0x2C); 01:LABEL 01:LABEL 25:CMPG(R4, R7, x:0x2); 04-05:03:drawLine(mode:0x5); 01:LABEL ****LoadFrontEndBinaryText End**** ***疑問点メモ -4 95 4 5 aa = 4 15 4 5 2A -4 95 4 bf ac 1 = 4 15 4 3F 2C 1 --どうしてどちらも同じSUB[4-95]なのに引数の数が違うんだ!? -SUBなど三項演算子の第三引数は符号付き拡張整数みたい -符号付きhh4の仕組みがよくわからない…単なる補数表現? **まだ作成中… **コメント欄(間違いの指摘や、情報を知っている方は教えてください!) -おもしろそうなことをはじめましたね!・・・そうですね、符号付き整数についてはhh4の特殊形式と言えるかもしれません。 -- ''K'' SIZE(10){2013-08-17 (土) 21:43:50} -このWebCPU_VMって、もしかしてすでに結構動いていませんか?!すごい!! -- ''K'' SIZE(10){2013-08-17 (土) 21:50:36} -バックエンドはbballが動く最低限の機能は実装しました…でもフロントエンドコードの仕様が難しいです… -- [[hikarupsp]] SIZE(10){2013-08-17 (土) 21:52:59} -きっと5で始まるAPI呼出し命令が難しいんですよね?それ以外はどうですか?何とかなりそうな感じですか? -- ''K'' SIZE(10){2013-08-17 (土) 21:59:03} -[[page0062]]を見るとフロントエンドコードの切れ目が分かると思います。そこから勉強するのが早道かもしれません。 -- ''K'' SIZE(10){2013-08-17 (土) 22:00:30} -fcodeが役に立ってよかった!>まだ途中です…やっと命令境界がみえてきた!fcodeのおかげです。 -- ''K'' SIZE(10){2013-08-17 (土) 22:18:39} -三項演算子は、基本的に第一項と第二項がレジスタで、第三項が拡張符号付き整数です。しかしこれでは、 R04=1-R04;が表現できません。このような時は、とりあえずR04=R3F-R04;のコードを出力した直後に、R3Fに入れたかった整数を拡張符号付き整数で記述します。>どうしてどちらも同じSUB[4-95]なのに引数の数が違うんだ!? -- ''K'' SIZE(10){2013-08-18 (日) 02:34:50} -符号付き整数は、2桁以上なら普通の補数表現です。1桁の場合、7が使えないので、-1がうまく表現できません。ということで、1桁の場合は特別ルールになっています。>符号付きhh4の仕組みがよくわからない…単なる補数表現? -- ''K'' SIZE(10){2013-08-18 (日) 02:38:13} -拡張符号付きhh4は[[page0054]]の(3)が詳しいかも? -- ''K'' SIZE(10){2013-08-18 (日) 03:25:14} -WebCPU_VMの完成度が日に日に上がっている! -- ''K'' SIZE(10){2013-08-19 (月) 23:36:42} -[[page0063]]に参考になりそうなことを書きました! -- ''K'' SIZE(10){2013-08-21 (水) 13:51:41} -すごくがんばっているのが分かるので、できれば少しくらい手伝ってあげたい・・・今は時間がなくてごめんなさい! -- ''K'' SIZE(10){2013-09-12 (木) 00:54:06} -おめでとうございます! >(なぜ終了条件に、実行前にP05に渡した、入力データの終端を使っていないのか少し不思議) ちなみにこれは以前からの手抜きです・・・。 -- ''K'' SIZE(10){2013-09-15 (日) 06:38:43} #comment();
テキスト整形のルールを表示する