fdpl_memo0003
の編集
https://k.osask.jp/klog/?fdpl_memo0003
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2012_0001
2013_0001
2013_0002
2013_0003
2014_0001
2015_0001
2016_07
2016_08
2016_09
2016_10
2016_11
2017_01
2017_02
2017_03
2017_04
2017_05
2018_01
2019_01
BracketName
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KH_SARC_00
KH_dha8
MenuBar
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
VC_install
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
fdpl_memo0001
fdpl_memo0002
fdpl_memo0003
fdpl_memo0004
fdpl_memo0005
fdpl_memo0006
fdpl_memo0007
fdpl_memo0008
fdpl_memo0009
fdpl_memo0010
gg02_0004
gg02_0005
gg02_0006
gg02_0007
gg02_0008
gg02_0009
https
impressions
memo0001
memo0002
oisix01
osaskology
osaskology0
osecpu_0001
osecpu_0002
p20200229a
p20200303a
p20200310a
p20200321a
p20200401a
p20200730a
p20201230a
p20220628a
p20220701a
populars
prog_0001
prog_0002
prog_0003
prog_0004
prog_0005
* KH-FDPL に関するメモ-0003 -(by [[K]], 2015.01.19) ** 基本方針 -どうせメモなので、気にせずどんどん書く。後で整理すればいい。 ** いろいろと整理 -基本オブジェクト: --0: nullオブジェクト --1: 32ビット整数オブジェクト --2: 倍精度浮動小数点オブジェクト --3: 可変長バイト列オブジェクト --4: DB型オブジェクト --5: 単純一次元配列オブジェクト(可変長) --6: 実行可能バイトコードオブジェクト(実体は2に準ずる) ---中身の生データを自由にはアクセスできない。専用の関数などでアクセスする。 //--6: 各種ハンドル・ポインタ類(分岐先アドレスなど) //---中身の生データを自由にはアクセスできない。専用の関数などでアクセスする。 ** 上位言語の仕様のメモ -明示しない限り整数オブジェクトは生成されない。基本的に倍精度浮動小数点。 -通常の代入は、同じ型の実体を作った後に内容をcopyする。 --もしすでに実体があって、それに上書きするときは、同型の場合は実体の作り直しはしないで、内容のcopyだけをする。 ** 最下部バイトコード仕様 -基本的にレジスタマシン。スタックマシンはもうやめた(バイトコード化によってパラメータのパースをケチる必要が無くなったので)。 -レジスタはまあ32本もあれば十分だろう。本当は16本でも十分だろうと思うけど、用途の固定されているものもあるし、まあ余裕として。 -レジスタは原則としてオブジェクトを指す。差していたオブジェクトが無くなってしまう場合も想定の範囲内なので、アクセスのたびにチェックが入る。レジスタがnullになることもある。 -用途が固定されているレジスタ --エラー報告用整数オブジェクト --アクセス権管理オブジェクト --名前解決用のスコープオブジェクト -00: NOP -01: オブジェクトの生成: [01 typ reg]: typに80をORすると、最初からretainされる。 --typ=0xffでnullのロードもできる。 -02: オブジェクトのretain: [02 reg mod]: modが1だと子供もすべてretainされる。 -03: オブジェクトのrelease: [03 reg mod]: modが1だと子供もすべてreleaseされる。 -04: 定数のロード:[04 reg typ imm] -05: 要素検索: [05 reg(obj) mod reg(key) reg(out:value)] -06: 要素の追加: [06 reg(obj) mod reg(key) reg(value)]: modが1だとkeyとvalueをretainする(keyがreatinされるかどうかはルールがある)k。 -07: 要素の削除: [07 reg(obj) mod reg(key)]: modが1だとkeyとvalueをreleaseする。 -08: 値のコピー: [08 reg(in) mod reg(out)]: modが80だと子供はreatinされた状態で作られる。 --コピーとは、inをいじってもoutが改変されない状態であることを指す。 -09: 値のリンク: [09 reg(in) mod reg(out)] --リンクとは、inをいじった時にoutにも影響される状態である。 -0a: ラベル設定: [0a label mod]: ラベルオブジェクトが作られるが前方参照も可能。 -0b: ラベル定数のロード: [0b label reg] (これいらない、04に統合できる) -0c: 条件分岐: [0c reg(cond) label]: reg==0は無条件分岐になるので、reg0は指定できない。 -0d: 条件分岐: [0d reg(cond) reg] -0e: releasePoolのopen -0f: releasePoolのclose -10: or: [10 reg(in) reg(in) reg(out)] -11: xor -12: and -13: -14: add -15: sub -16: mul -17: shl -18: sar -19: shr -1a: div -1b: mod -20: cmpe -21: cmpne -22: cmpl (a<b) -23: cmpge (a>=b) -24: cmple (a<=b) -25: cmpg (a>b) -残り: --0d: エラーレジスタへの定数設定: [0d index imm] --各種の演算 --名前設定 --名前削除 --名前解決: [0c reg(name) * こめんと欄 #comment
タイムスタンプを変更しない
* KH-FDPL に関するメモ-0003 -(by [[K]], 2015.01.19) ** 基本方針 -どうせメモなので、気にせずどんどん書く。後で整理すればいい。 ** いろいろと整理 -基本オブジェクト: --0: nullオブジェクト --1: 32ビット整数オブジェクト --2: 倍精度浮動小数点オブジェクト --3: 可変長バイト列オブジェクト --4: DB型オブジェクト --5: 単純一次元配列オブジェクト(可変長) --6: 実行可能バイトコードオブジェクト(実体は2に準ずる) ---中身の生データを自由にはアクセスできない。専用の関数などでアクセスする。 //--6: 各種ハンドル・ポインタ類(分岐先アドレスなど) //---中身の生データを自由にはアクセスできない。専用の関数などでアクセスする。 ** 上位言語の仕様のメモ -明示しない限り整数オブジェクトは生成されない。基本的に倍精度浮動小数点。 -通常の代入は、同じ型の実体を作った後に内容をcopyする。 --もしすでに実体があって、それに上書きするときは、同型の場合は実体の作り直しはしないで、内容のcopyだけをする。 ** 最下部バイトコード仕様 -基本的にレジスタマシン。スタックマシンはもうやめた(バイトコード化によってパラメータのパースをケチる必要が無くなったので)。 -レジスタはまあ32本もあれば十分だろう。本当は16本でも十分だろうと思うけど、用途の固定されているものもあるし、まあ余裕として。 -レジスタは原則としてオブジェクトを指す。差していたオブジェクトが無くなってしまう場合も想定の範囲内なので、アクセスのたびにチェックが入る。レジスタがnullになることもある。 -用途が固定されているレジスタ --エラー報告用整数オブジェクト --アクセス権管理オブジェクト --名前解決用のスコープオブジェクト -00: NOP -01: オブジェクトの生成: [01 typ reg]: typに80をORすると、最初からretainされる。 --typ=0xffでnullのロードもできる。 -02: オブジェクトのretain: [02 reg mod]: modが1だと子供もすべてretainされる。 -03: オブジェクトのrelease: [03 reg mod]: modが1だと子供もすべてreleaseされる。 -04: 定数のロード:[04 reg typ imm] -05: 要素検索: [05 reg(obj) mod reg(key) reg(out:value)] -06: 要素の追加: [06 reg(obj) mod reg(key) reg(value)]: modが1だとkeyとvalueをretainする(keyがreatinされるかどうかはルールがある)k。 -07: 要素の削除: [07 reg(obj) mod reg(key)]: modが1だとkeyとvalueをreleaseする。 -08: 値のコピー: [08 reg(in) mod reg(out)]: modが80だと子供はreatinされた状態で作られる。 --コピーとは、inをいじってもoutが改変されない状態であることを指す。 -09: 値のリンク: [09 reg(in) mod reg(out)] --リンクとは、inをいじった時にoutにも影響される状態である。 -0a: ラベル設定: [0a label mod]: ラベルオブジェクトが作られるが前方参照も可能。 -0b: ラベル定数のロード: [0b label reg] (これいらない、04に統合できる) -0c: 条件分岐: [0c reg(cond) label]: reg==0は無条件分岐になるので、reg0は指定できない。 -0d: 条件分岐: [0d reg(cond) reg] -0e: releasePoolのopen -0f: releasePoolのclose -10: or: [10 reg(in) reg(in) reg(out)] -11: xor -12: and -13: -14: add -15: sub -16: mul -17: shl -18: sar -19: shr -1a: div -1b: mod -20: cmpe -21: cmpne -22: cmpl (a<b) -23: cmpge (a>=b) -24: cmple (a<=b) -25: cmpg (a>b) -残り: --0d: エラーレジスタへの定数設定: [0d index imm] --各種の演算 --名前設定 --名前削除 --名前解決: [0c reg(name) * こめんと欄 #comment
テキスト整形のルールを表示する