page0063
の編集
http://osecpu.osask.jp/wiki/?page0063
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
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の利用 -(by [[K]], 2013.08.21) ** (0) はいけい -[[hikarupsp_FrontEndCode]]を支援したい。 -OSECPU-VMでは、フロントエンド→バックエンドの変換をOSECPUアプリでやっています。なぜなら、こうしておけば他のCPU向けに移植するときに変換ルーチンを移植しないですむからです。 -[[hikarupsp]]さんはJavaScriptで変換しようとしているけど、変換をOSECPUアプリでやるほうが楽なんじゃないかと考えました(バージョンアップに追従するのも簡単です)。当然ですが、この変換アプリはバックエンドコードだけで書かれています。 ** (1) きほん -変換アプリはどこに入っているかですが、syslib.oseの中に入っています。しかしこれはライブラリ形式になっている上に、独自の簡易な圧縮がかかっているために、取り出すのは少々面倒です。ですからソースから.oseファイルを作ることにしましょう。 prompt>amake0 decoder osectols.exe -DNODBGINFO0 -これを実行するとdecoder.oseというファイルができます。これが変換用OSECPUアプリです。 -次はこのdecoder.oseの使い方です。 --フロントエンドコードをメモリに読み込んで、出力先のバッファとテンポラリを確保して、Pxxレジスタでそれらを教えてあげるだけです。 --先頭2バイトのシグネチャはdecoderが感知しないので、自分で2バイトをコピーしてください。 入力パラメータ: P02 = T_UINT8: &backend[2] (出力バッファ先頭) P03 = T_UINT8: &backend[backend-maxsize] (出力バッファの限界) P04 = T_UINT8: &frontend[2] (入力データ先頭) P05 = T_UINT8: &frontend[frontend-size] (入力データの終端:最終バイトの次のアドレス) P06 = T_UINT8: &temp0[0] (要素数が2M以上のテンポラリバッファ) P07 = T_UINT8: &temp0[temp-maxsize] P0A = T_UINT32: &temp1[0] (要素数が16Kくらいあれば十分なバッファ) P0B = T_SINT32: &temp2[0] (要素数が64のバッファ:Pxxレジスタの個数) P0C = T_SINT32: &temp3[0] (要素数が4Kのバッファ:登録可能ラベル数) P0D = T_UINT8: &temp4[0] (要素数が256のバッファ) アプリ終了時: R00 == 0 正常終了 R00 != 0 変換失敗 P02 == バックエンドコードの終端, つまり P02 - &backend[0] = バックエンドコードのサイズ --バックエンドの実行エンジンをある程度完成させたうえで、decoder.oseの内容をダンプして配列にでも入れて、実行してください。 -参考情報: --decoder.oseは以下の25命令しか使っていません(ver.0.72の段階で)。 01: LB 02: LIMM 03: PLIMM 04: CND 08: LMEM 09: SMEM 0E: PADD 10: OR 11: XOR 12: AND 14: ADD 15: SUB 16: MUL 18: SHL 19: SAR 1E: PCP 20: CMPE 21: CMPNE 22: CMPL 23: CMPGE 24: CMPLE 25: CMPG 29: PCMPNE 2B: PCMPGE 34: (data) ** (2) なぜdecoderの利用を勧めるのか? -楽だから!それ以外にはないです。 -フロントエンド→バックエンドにおいて、基本的な変換はそんなに難しくはないのですが、文字列を含むAPI呼び出しと型推論が入っているところはとても面倒です。きっとここをdecoderを使わずにやろうとしたら、途中で心が折れると思います・・・。 -せっかくここを.ose化しておいたのだから、これを利用しない手はありませんよ! ** (3) 将来の計画 -tek5デコーダも早く.ose化したいと前から思っています・・・。 --そのためには[[page0047]]の符号なし演算がほしい。そうしないとけっこう遅くなる。 --あとできれば構造体サポートもほしい。 * こめんと欄 -うわぁ!ありがとうございます!確かにデコーダーがOSECPUコードで実行されているところまでは突き止めたのですが、その先がわからず…。最近は忙しくて更新できていませんが、これならすぐ実装できそうです。ありがとうございます! -- [[hikarupsp]] SIZE(10){2013-08-21 (水) 19:04:17} #comment
タイムスタンプを変更しない
* decoderの利用 -(by [[K]], 2013.08.21) ** (0) はいけい -[[hikarupsp_FrontEndCode]]を支援したい。 -OSECPU-VMでは、フロントエンド→バックエンドの変換をOSECPUアプリでやっています。なぜなら、こうしておけば他のCPU向けに移植するときに変換ルーチンを移植しないですむからです。 -[[hikarupsp]]さんはJavaScriptで変換しようとしているけど、変換をOSECPUアプリでやるほうが楽なんじゃないかと考えました(バージョンアップに追従するのも簡単です)。当然ですが、この変換アプリはバックエンドコードだけで書かれています。 ** (1) きほん -変換アプリはどこに入っているかですが、syslib.oseの中に入っています。しかしこれはライブラリ形式になっている上に、独自の簡易な圧縮がかかっているために、取り出すのは少々面倒です。ですからソースから.oseファイルを作ることにしましょう。 prompt>amake0 decoder osectols.exe -DNODBGINFO0 -これを実行するとdecoder.oseというファイルができます。これが変換用OSECPUアプリです。 -次はこのdecoder.oseの使い方です。 --フロントエンドコードをメモリに読み込んで、出力先のバッファとテンポラリを確保して、Pxxレジスタでそれらを教えてあげるだけです。 --先頭2バイトのシグネチャはdecoderが感知しないので、自分で2バイトをコピーしてください。 入力パラメータ: P02 = T_UINT8: &backend[2] (出力バッファ先頭) P03 = T_UINT8: &backend[backend-maxsize] (出力バッファの限界) P04 = T_UINT8: &frontend[2] (入力データ先頭) P05 = T_UINT8: &frontend[frontend-size] (入力データの終端:最終バイトの次のアドレス) P06 = T_UINT8: &temp0[0] (要素数が2M以上のテンポラリバッファ) P07 = T_UINT8: &temp0[temp-maxsize] P0A = T_UINT32: &temp1[0] (要素数が16Kくらいあれば十分なバッファ) P0B = T_SINT32: &temp2[0] (要素数が64のバッファ:Pxxレジスタの個数) P0C = T_SINT32: &temp3[0] (要素数が4Kのバッファ:登録可能ラベル数) P0D = T_UINT8: &temp4[0] (要素数が256のバッファ) アプリ終了時: R00 == 0 正常終了 R00 != 0 変換失敗 P02 == バックエンドコードの終端, つまり P02 - &backend[0] = バックエンドコードのサイズ --バックエンドの実行エンジンをある程度完成させたうえで、decoder.oseの内容をダンプして配列にでも入れて、実行してください。 -参考情報: --decoder.oseは以下の25命令しか使っていません(ver.0.72の段階で)。 01: LB 02: LIMM 03: PLIMM 04: CND 08: LMEM 09: SMEM 0E: PADD 10: OR 11: XOR 12: AND 14: ADD 15: SUB 16: MUL 18: SHL 19: SAR 1E: PCP 20: CMPE 21: CMPNE 22: CMPL 23: CMPGE 24: CMPLE 25: CMPG 29: PCMPNE 2B: PCMPGE 34: (data) ** (2) なぜdecoderの利用を勧めるのか? -楽だから!それ以外にはないです。 -フロントエンド→バックエンドにおいて、基本的な変換はそんなに難しくはないのですが、文字列を含むAPI呼び出しと型推論が入っているところはとても面倒です。きっとここをdecoderを使わずにやろうとしたら、途中で心が折れると思います・・・。 -せっかくここを.ose化しておいたのだから、これを利用しない手はありませんよ! ** (3) 将来の計画 -tek5デコーダも早く.ose化したいと前から思っています・・・。 --そのためには[[page0047]]の符号なし演算がほしい。そうしないとけっこう遅くなる。 --あとできれば構造体サポートもほしい。 * こめんと欄 -うわぁ!ありがとうございます!確かにデコーダーがOSECPUコードで実行されているところまでは突き止めたのですが、その先がわからず…。最近は忙しくて更新できていませんが、これならすぐ実装できそうです。ありがとうございます! -- [[hikarupsp]] SIZE(10){2013-08-21 (水) 19:04:17} #comment
テキスト整形のルールを表示する