page0047
の編集
http://osecpu.osask.jp/wiki/?page0047
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
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のfloatサポートとマウスサポートについて -(by [[K]], 2013.07.02) ** (1) 方針転換 -[[memo0002]]の2013.04.02のところに、はっきりと「FPUをサポートしない」と書きました。 -しかしOSECPUの成果は当初の予想を大きく上回っていて、本当にいろんなものがびっくりするくらいに小さく書けてしまうので、float演算できないことがとても惜しくなってきました。 -ということで当初は全く考えていなかった、float演算やマウスのサポートを遠くない将来に入れようと検討しています。 ~ -OSECPUにこれらの機能のサポートをためらっていた理由とは、そもそもなんだったのかを明らかにしたいと思います。 -OSECPUはPCだけのためのOSではなくて、組み込み機器やマイコンも視野に入れたOSです。たとえばゲームボーイアドバンスくらいの環境でも十分に動作するだろうかとか、80286とかi386SX程度の旧型PCでも動作するだろうかとか、そういうことを考えながら設計してきました。というのは、本質的には要求ハードウェアのハードルを上げる必要がないからです。これらのハードウェアを切り捨てる必然性がないのなら、切り捨てないようにするというのが私の基本的な考えです。 -そのせいで、これらで共通に使えそうだと思われる機能しかAPIに付けてきませんでした。将来的にはいろいろやるにしても、まずはこの簡単なAPIでできることを一通りやりつくそうと考えていました。 -しかし上記のとおり、もはやOSECPUの可能性はかなりあるように思われて、それをいたずらに制限するのは得策ではないと考えて、floatやマウスのサポートを検討することにします。 ~ -以下の仕様についての実装時期は正確には未定です。 ** (2) マウス関係のAPIの仕様 -マウスイベントはinkeyバッファに入れたい。そうしないとキー入力が混ざった時に、どちらが先なのかわからなくなる。 -混乱を避けるため、各アプリがマウス拡張をenableにしなければ、inkeyバッファにマウスイベントが入ることはない。 -マウスイベントはドラッグなどをサポートするとすぐに増えるため、クリック状態の変更を伴わない状態変化(座標変化のみ)は、inkeyバッファにたまるたびに以降の追加がマスクされる。だからアプリはこれを毎回解除することになる。 ** (3) floatの仕様 -データ型にT_FLT32とT_FLT64を追加。Fxxレジスタを64個追加。 -レジスタは基本的にはdoubleで保持・演算される。しかし実際の精度については機種依存を許容する。 データ転送命令(6命令) 40: FLIMM 41: FCP 42: CNVFI Fxx,Rxx 43: CNVIF Rxx,Fxx 44: FLMEM (PAFLMEM) 45: FSMEM (PAFSMEM) 二項演算子(2命令) 46: FABS 47: FSQRT 三項演算子(4命令) 50: FADD 51: FSUB 52: FMUL 53: FDIV 比較命令(6命令?) 48-: FCMPcc -他の演算命令はライブラリでいいかなあ・・・。 -NaNとかのサポートを入れたら比較命令はもう少し増えるかも。 ** (4) 符号なし演算 -ついでに整数の符号なし演算を入れようかなと考え中。 --符号なし比較(4命令) --符号なしの連結シフト命令(2命令) --ゼロ拡張、符号拡張命令(計2命令) --32bit * 32bit = 32bit : 32bit な符号なし乗算(1命令) --32bit : 32bit / 32bit = 32bit ... 32bit な符号なし除算(1命令) --合計10命令 //--SHR。符号なし除算。 //-符号なしで乗算した後、指定されたビット数だけ右シフトして、さらに結果が32bit以下になるように指定した値でANDするやつがほしい。これはよく使うはず。 * こめんと欄 #comment
タイムスタンプを変更しない
* OSECPUのfloatサポートとマウスサポートについて -(by [[K]], 2013.07.02) ** (1) 方針転換 -[[memo0002]]の2013.04.02のところに、はっきりと「FPUをサポートしない」と書きました。 -しかしOSECPUの成果は当初の予想を大きく上回っていて、本当にいろんなものがびっくりするくらいに小さく書けてしまうので、float演算できないことがとても惜しくなってきました。 -ということで当初は全く考えていなかった、float演算やマウスのサポートを遠くない将来に入れようと検討しています。 ~ -OSECPUにこれらの機能のサポートをためらっていた理由とは、そもそもなんだったのかを明らかにしたいと思います。 -OSECPUはPCだけのためのOSではなくて、組み込み機器やマイコンも視野に入れたOSです。たとえばゲームボーイアドバンスくらいの環境でも十分に動作するだろうかとか、80286とかi386SX程度の旧型PCでも動作するだろうかとか、そういうことを考えながら設計してきました。というのは、本質的には要求ハードウェアのハードルを上げる必要がないからです。これらのハードウェアを切り捨てる必然性がないのなら、切り捨てないようにするというのが私の基本的な考えです。 -そのせいで、これらで共通に使えそうだと思われる機能しかAPIに付けてきませんでした。将来的にはいろいろやるにしても、まずはこの簡単なAPIでできることを一通りやりつくそうと考えていました。 -しかし上記のとおり、もはやOSECPUの可能性はかなりあるように思われて、それをいたずらに制限するのは得策ではないと考えて、floatやマウスのサポートを検討することにします。 ~ -以下の仕様についての実装時期は正確には未定です。 ** (2) マウス関係のAPIの仕様 -マウスイベントはinkeyバッファに入れたい。そうしないとキー入力が混ざった時に、どちらが先なのかわからなくなる。 -混乱を避けるため、各アプリがマウス拡張をenableにしなければ、inkeyバッファにマウスイベントが入ることはない。 -マウスイベントはドラッグなどをサポートするとすぐに増えるため、クリック状態の変更を伴わない状態変化(座標変化のみ)は、inkeyバッファにたまるたびに以降の追加がマスクされる。だからアプリはこれを毎回解除することになる。 ** (3) floatの仕様 -データ型にT_FLT32とT_FLT64を追加。Fxxレジスタを64個追加。 -レジスタは基本的にはdoubleで保持・演算される。しかし実際の精度については機種依存を許容する。 データ転送命令(6命令) 40: FLIMM 41: FCP 42: CNVFI Fxx,Rxx 43: CNVIF Rxx,Fxx 44: FLMEM (PAFLMEM) 45: FSMEM (PAFSMEM) 二項演算子(2命令) 46: FABS 47: FSQRT 三項演算子(4命令) 50: FADD 51: FSUB 52: FMUL 53: FDIV 比較命令(6命令?) 48-: FCMPcc -他の演算命令はライブラリでいいかなあ・・・。 -NaNとかのサポートを入れたら比較命令はもう少し増えるかも。 ** (4) 符号なし演算 -ついでに整数の符号なし演算を入れようかなと考え中。 --符号なし比較(4命令) --符号なしの連結シフト命令(2命令) --ゼロ拡張、符号拡張命令(計2命令) --32bit * 32bit = 32bit : 32bit な符号なし乗算(1命令) --32bit : 32bit / 32bit = 32bit ... 32bit な符号なし除算(1命令) --合計10命令 //--SHR。符号なし除算。 //-符号なしで乗算した後、指定されたビット数だけ右シフトして、さらに結果が32bit以下になるように指定した値でANDするやつがほしい。これはよく使うはず。 * こめんと欄 #comment
テキスト整形のルールを表示する