page0080
の編集
http://osecpu.osask.jp/wiki/?page0080
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
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
* OSECPUシェル -(by [[K]], 2014.05.21) ** (0) -(ここに書いていることは2014年度内には実現しません!) -OSECPU-VMの数年単位の目標として、「OSECPU-VMの中で暮らす」というのがあります。・・・つまりOSECPU-VMのアプリだけでいろいろなことができるようにしたいのです。テキストエディタ、コンパイラ、ファイル操作、アプリの起動、などなど。 -このうちのシェルに相当する部分が、OSECPUシェルです。OSECPUシェルは他のOSECPU-VMのアプリを起動したり、強制終了したり、スクリプトを解釈したりします。 ** (1) -スクリプトを解釈するとはいっても、新規にスクリプト処理系を作る気は全くなくて、OSECPU-VMのバイトコードがシェルスクリプトです。16進数などではバイトコードは書きにくいかもしれませんが、適当な言語を使えばバイトコードも簡単に作れるでしょう。 -以下に書くのは、このシェルのためのアイデアです。 -なお、このシェルはPC向けを想定しています。他の環境向けを考えたら、また別の仕様のほうがいいかもしれません。 ** (2) -OSECPUシェルでは、ファイルとオブジェクトを区別しない。「オブジェクトは全てファイルである」。つまりOSECPU-VMアプリが適当なオブジェクトを作って、アプリが終了すると、ファイルシステム上にそのオブジェクトが残る。邪魔なら捨てなければいけない。 -mallocはしたがfreeしていないオブジェクトは、全て残る。静的オブジェクト(グローバル変数)も残る。レジスタの値も終了時の値が全て残っている。 -これらは次回実行時に消えるわけではない。同じアプリを3度実行すれば、同じものが3つできてしまうことになる。うっとうしいかもしれないが、そういうものなのだ。 -アプリを起動すると、内部では適当な番号が割り振られる。これはプロセスのUUIDかそれに相当するものである。このUUIDさえ分かれば、そのプロセスが何時何分に始まって、何時何分に終了したかが分かるし、そのプロセスがfreeしなかった全てのオブジェクトは、そのUUIDの名前のフォルダに全部入っている。ユーザはこのフォルダをコピーしてもいいし、自分の区別のためにリネームしてもいい。 -プロセスのUUIDが分かれば、起動時のコマンドラインも分かる。 -これらの情報は、もちろん電源を切っても消えない。 -mallocしたオブジェクトには名前がないだろう。となればしょうがないのでやはり適当なUUIDをファイル名とする。中身はもちろん型情報がついた状態で保存されている。 -そしてユーザはこれらの増え続ける「ログ」を暇なときに消去すればいい。「終了後30日以上経ったもので、リネームしてないものは全て消去」のように。まあ自動で消す設定があってもいいのかもしれないが。 ~ -この仕様の意図を説明したい。・・・まず、現状のPC環境を考えてみると、テラバイト級の記憶容量は容易に手に入る状況で、これらをはっきりいって「もてあましている」。それならばもう何も考えずになんでも残せばいいではないか。あふれて困ったら消せばいいのだ。・・・消すことなんていつでもできる。しかし消してしまったものは戻ってこない。だからできるだけ勝手には消さない方針なのだ。 -ファイル名もディレクトリ名も本当にめちゃくちゃなのであるが、それは参考にできそうなデータがないのだからしょうがない。しかし、malloc命令のときのDRレジスタの値やFEリマークなどを使って、変数名を反映させることはできるかもしれない。仮にそれができなくても、データの中身を使って検索はできるから、もしデータを探しているのなら見つけることはできるだろう。 -世間の一般的なシェルでは「標準出力」というものがあって、そこにアプリが出力結果を出すことになっている。どんなにたくさんの情報があっても、標準の出力結果は一つしか出せない。そんなのって不便だと僕は思う。アプリはいくつでも好きなだけ結果を出力できるべきだ。オブジェクトならいくつでも残せる。しかも出力がテキストでなければいけないというのもおかしい。バイナリでいいではないか。型情報があればバイナリでも十分見やすくできる。 -標準出力にhelloと書くのと、文字列オブジェクトにhelloを書き込んでおくのと、いったどっちが応用しやすいだろう。オブジェクトに決まっている。オブジェクトに入っていれば、他のオブジェクトに結合することできるし、ハッシュ値を計算することもできる。標準出力に出してしまったら、それは入力しなければいけない。つまりファイル処理をやっている。これはムダだ。数値オブジェクトならなおさらで、テキストにするために10進表記をして、それをまた戻したりしている。 ~ -OSECPU-VMアプリには、ファイルを読み書きする機構が本質的には不要である。なぜならファイルとオブジェクトは同じものだから。つまりPxxレジスタは、ファイルの○○バイト目を指すことができるし、そこから読んだり書いたりできる。 -OSECPU-VMで何か適当な関数を書いたとしよう。それはおそらくR30~R3BのレジスタやP30~P3Bを使って何か引数を渡して、何か計算されて、最後に結果がR30~R3BやP30~P3Bに返ってくるだろう。これはそのまま、OSECPUシェルの「外部コマンド」になりうる。P31が指しているオブジェクトは自動でファイル化されているのだから。ユーザは関数が返したオブジェクトをゆっくりと見ることができる(スクロールで流れたりはしないし)。P32やP33が指しているオブジェクトだって同様に見られる。R30の値だって確認できる。全く問題がない。もはや画面出力とかをする気が起きない。勝手に出力なんかされたら、画面が汚れて応用しにくくなってしまうだけだ。画像のオブジェクトを返すことだってできる。 ~ -標準出力では、アプリが終了する前でも途中までの出力をリアルタイムに見られる。OSECPUシェルのコマンドでもそれを実現したい。・・・そのためには、終了前のプロセスでもオブジェクトの中身が見えればいいのだ。それは難しいことじゃない。多分できる。 -ファイルがオブジェクトなら、ファイル名は変数名みたいなものである。つまり変数を宣言するとファイルができる。代入するとコピーされる。 -OSECPUシェルには環境変数はない。それは普通の変数を使えばいいのだから。 -OSECPU-VMアプリがセキュリティ例外などで異常終了したとしても、オブジェクトは残っていて全部見える。だからデータを救うこともできる。UNIX系ならコアダンプから救出できるのかもしれないけど、Windows系ではそういうことはできないほうが普通なので、これはありがたいはず。 ~ -シェルのコマンドラインで16進数を書くのはさすがに泣けるので、R00=3;くらいの構文は解釈できなければいけない。となると、言語処理系との連携を前提にして、シェル自身は基本機能だけを提供するべきなのかも。 --つまりコマンドライン解釈部は、FulynやOSECPU-Lispなどなんでもよい。要するにOSECPU-VMのバイトコードを出力できるコンパイラならなんでもよい。 --好きな言語で快適に操作できる。 ~ -OSECPUシェルは、マイクロソフトのPowerShellに似ているかもしれない。 ** (3) -これらの実現にはもちろんいろいろと問題があるだろう。それは解決しなければいけない。 -ディスクを使いすぎるという問題もあるかもしれない。同一内容のファイルはディスク内で共通化されて、容量を節約するようになっているべきかもしれない。 -そもそも基本的にはオブジェクトはメモリに置かれる。ディスク上にあるように見せるが、実際にディスクに書き込まれるのは、PCが暇な時に裏でやる。 -しかしとにかく、僕はこんな感じのシェルを作りたい。 * こめんと欄 #comment
タイムスタンプを変更しない
* OSECPUシェル -(by [[K]], 2014.05.21) ** (0) -(ここに書いていることは2014年度内には実現しません!) -OSECPU-VMの数年単位の目標として、「OSECPU-VMの中で暮らす」というのがあります。・・・つまりOSECPU-VMのアプリだけでいろいろなことができるようにしたいのです。テキストエディタ、コンパイラ、ファイル操作、アプリの起動、などなど。 -このうちのシェルに相当する部分が、OSECPUシェルです。OSECPUシェルは他のOSECPU-VMのアプリを起動したり、強制終了したり、スクリプトを解釈したりします。 ** (1) -スクリプトを解釈するとはいっても、新規にスクリプト処理系を作る気は全くなくて、OSECPU-VMのバイトコードがシェルスクリプトです。16進数などではバイトコードは書きにくいかもしれませんが、適当な言語を使えばバイトコードも簡単に作れるでしょう。 -以下に書くのは、このシェルのためのアイデアです。 -なお、このシェルはPC向けを想定しています。他の環境向けを考えたら、また別の仕様のほうがいいかもしれません。 ** (2) -OSECPUシェルでは、ファイルとオブジェクトを区別しない。「オブジェクトは全てファイルである」。つまりOSECPU-VMアプリが適当なオブジェクトを作って、アプリが終了すると、ファイルシステム上にそのオブジェクトが残る。邪魔なら捨てなければいけない。 -mallocはしたがfreeしていないオブジェクトは、全て残る。静的オブジェクト(グローバル変数)も残る。レジスタの値も終了時の値が全て残っている。 -これらは次回実行時に消えるわけではない。同じアプリを3度実行すれば、同じものが3つできてしまうことになる。うっとうしいかもしれないが、そういうものなのだ。 -アプリを起動すると、内部では適当な番号が割り振られる。これはプロセスのUUIDかそれに相当するものである。このUUIDさえ分かれば、そのプロセスが何時何分に始まって、何時何分に終了したかが分かるし、そのプロセスがfreeしなかった全てのオブジェクトは、そのUUIDの名前のフォルダに全部入っている。ユーザはこのフォルダをコピーしてもいいし、自分の区別のためにリネームしてもいい。 -プロセスのUUIDが分かれば、起動時のコマンドラインも分かる。 -これらの情報は、もちろん電源を切っても消えない。 -mallocしたオブジェクトには名前がないだろう。となればしょうがないのでやはり適当なUUIDをファイル名とする。中身はもちろん型情報がついた状態で保存されている。 -そしてユーザはこれらの増え続ける「ログ」を暇なときに消去すればいい。「終了後30日以上経ったもので、リネームしてないものは全て消去」のように。まあ自動で消す設定があってもいいのかもしれないが。 ~ -この仕様の意図を説明したい。・・・まず、現状のPC環境を考えてみると、テラバイト級の記憶容量は容易に手に入る状況で、これらをはっきりいって「もてあましている」。それならばもう何も考えずになんでも残せばいいではないか。あふれて困ったら消せばいいのだ。・・・消すことなんていつでもできる。しかし消してしまったものは戻ってこない。だからできるだけ勝手には消さない方針なのだ。 -ファイル名もディレクトリ名も本当にめちゃくちゃなのであるが、それは参考にできそうなデータがないのだからしょうがない。しかし、malloc命令のときのDRレジスタの値やFEリマークなどを使って、変数名を反映させることはできるかもしれない。仮にそれができなくても、データの中身を使って検索はできるから、もしデータを探しているのなら見つけることはできるだろう。 -世間の一般的なシェルでは「標準出力」というものがあって、そこにアプリが出力結果を出すことになっている。どんなにたくさんの情報があっても、標準の出力結果は一つしか出せない。そんなのって不便だと僕は思う。アプリはいくつでも好きなだけ結果を出力できるべきだ。オブジェクトならいくつでも残せる。しかも出力がテキストでなければいけないというのもおかしい。バイナリでいいではないか。型情報があればバイナリでも十分見やすくできる。 -標準出力にhelloと書くのと、文字列オブジェクトにhelloを書き込んでおくのと、いったどっちが応用しやすいだろう。オブジェクトに決まっている。オブジェクトに入っていれば、他のオブジェクトに結合することできるし、ハッシュ値を計算することもできる。標準出力に出してしまったら、それは入力しなければいけない。つまりファイル処理をやっている。これはムダだ。数値オブジェクトならなおさらで、テキストにするために10進表記をして、それをまた戻したりしている。 ~ -OSECPU-VMアプリには、ファイルを読み書きする機構が本質的には不要である。なぜならファイルとオブジェクトは同じものだから。つまりPxxレジスタは、ファイルの○○バイト目を指すことができるし、そこから読んだり書いたりできる。 -OSECPU-VMで何か適当な関数を書いたとしよう。それはおそらくR30~R3BのレジスタやP30~P3Bを使って何か引数を渡して、何か計算されて、最後に結果がR30~R3BやP30~P3Bに返ってくるだろう。これはそのまま、OSECPUシェルの「外部コマンド」になりうる。P31が指しているオブジェクトは自動でファイル化されているのだから。ユーザは関数が返したオブジェクトをゆっくりと見ることができる(スクロールで流れたりはしないし)。P32やP33が指しているオブジェクトだって同様に見られる。R30の値だって確認できる。全く問題がない。もはや画面出力とかをする気が起きない。勝手に出力なんかされたら、画面が汚れて応用しにくくなってしまうだけだ。画像のオブジェクトを返すことだってできる。 ~ -標準出力では、アプリが終了する前でも途中までの出力をリアルタイムに見られる。OSECPUシェルのコマンドでもそれを実現したい。・・・そのためには、終了前のプロセスでもオブジェクトの中身が見えればいいのだ。それは難しいことじゃない。多分できる。 -ファイルがオブジェクトなら、ファイル名は変数名みたいなものである。つまり変数を宣言するとファイルができる。代入するとコピーされる。 -OSECPUシェルには環境変数はない。それは普通の変数を使えばいいのだから。 -OSECPU-VMアプリがセキュリティ例外などで異常終了したとしても、オブジェクトは残っていて全部見える。だからデータを救うこともできる。UNIX系ならコアダンプから救出できるのかもしれないけど、Windows系ではそういうことはできないほうが普通なので、これはありがたいはず。 ~ -シェルのコマンドラインで16進数を書くのはさすがに泣けるので、R00=3;くらいの構文は解釈できなければいけない。となると、言語処理系との連携を前提にして、シェル自身は基本機能だけを提供するべきなのかも。 --つまりコマンドライン解釈部は、FulynやOSECPU-Lispなどなんでもよい。要するにOSECPU-VMのバイトコードを出力できるコンパイラならなんでもよい。 --好きな言語で快適に操作できる。 ~ -OSECPUシェルは、マイクロソフトのPowerShellに似ているかもしれない。 ** (3) -これらの実現にはもちろんいろいろと問題があるだろう。それは解決しなければいけない。 -ディスクを使いすぎるという問題もあるかもしれない。同一内容のファイルはディスク内で共通化されて、容量を節約するようになっているべきかもしれない。 -そもそも基本的にはオブジェクトはメモリに置かれる。ディスク上にあるように見せるが、実際にディスクに書き込まれるのは、PCが暇な時に裏でやる。 -しかしとにかく、僕はこんな感じのシェルを作りたい。 * こめんと欄 #comment
テキスト整形のルールを表示する