📦 Out of Context リポジトリ

リポジトリ / emssr / independent_common_compiler

r2
r2 emssr1
# 作業領域と外部環境
r2 emssr2
r2 emssr3
[← 総表](Index.md)
r2 emssr4
r2 emssr5
意味レジストリ $\mathcal M$ の原子はそのまま降りる(16 §5.0)。正準添字を取らないので、
r2 emssr6
平文の側から届く。
r2 emssr7
r2 emssr8
$$
r2 emssr9
\operatorname{ord}(g)\in[0,11]\ \Longrightarrow\ \mathcal M\ \text{と一致},
r2 emssr10
\qquad
r2 emssr11
\text{だから降下は名前を変えない}
r2 emssr12
$$
r2 emssr13
r2 emssr14
---
r2 emssr15
r2 emssr16
## 作業領域
r2 emssr17
r2 emssr18
| 音節 | 記号 | 型 | 意味 |
r2 emssr19
|---|---|---|---|
r2 emssr20
| `mi` | $\mathrm{Load}$ | $D\to D$ | 語番号から読む |
r2 emssr21
| `mu` | $\mathrm{Store}$ | $D\otimes D\to I$ | 語番号へ書く |
r2 emssr22
r2 emssr23
番地も値もワイヤで来るので、正準添字が要らない。語の byte 幅は architecture package が
r2 emssr24
持つので source に現れない(§32.2)。
r2 emssr25
r2 emssr26
$\mathrm{Load}$ は深度を落とす唯一の箱になる。語には分子だけが載るためである。
r2 emssr27
r2 emssr28
### 退避語
r2 emssr29
r2 emssr30
二値の八箱は既定値を語へ退避する(16 §5.3)。退避語は本文の語の上へ置く。
r2 emssr31
r2 emssr32
$$
r2 emssr33
S=1+\max\Bigl(31,\ |\Gamma^+|-1,\ \bigl\{\text{定数から畳める Load / Store の番地}\bigr\}\Bigr)
r2 emssr34
$$
r2 emssr35
r2 emssr36
一段目の降下は $S$ を決めるためだけに走る。退避語は本文の番地へ流れないので、
r2 emssr37
二段目の番地は一段目と同じになる。
r2 emssr38
r2 emssr39
---
r2 emssr40
r2 emssr41
## 外部環境への報告
r2 emssr42
r2 emssr43
| 音節 | 記号 | 型 | 実行 |
r2 emssr44
|---|---|---|---|
r2 emssr45
| `me` | $\mathrm{Ok}$ | $I\to I$ | 成功報告。実行を閉じる |
r2 emssr46
| `di` | $\mathrm{Ko}$ | $I\to I$ | 失敗報告。実行を閉じる |
r2 emssr47
| `du` | $\mathrm{Put}$ | $D\to I$ | 一 byte 出力。実行を閉じない |
r2 emssr48
r2 emssr49
$\mathrm{Put}$ は $[0,255]$ の整数として読み、範囲外は下位 8 bit を採る。
r2 emssr50
r2 emssr51
```
r2 emssr52
hu ka du ka me
r2 emssr53
```
r2 emssr54
r2 emssr55
`examples/vocabulary/du_put.cmn`。境界が $I$ なので出力語を持たない。
r2 emssr56
r2 emssr57
$\varphi_\partial$ は原子に入らない。唯一の非可逆観測は path separation と外部報告の対で現れる。
r2 emssr58
$\mathrm{EqBr}$ / $\mathrm{LtBr}$ が連続量を二つの経路へ分け、$\mathrm{Ok}$ / $\mathrm{Ko}$ が
r2 emssr59
その結果を境界の外へ出す。この二段が $\varphi_\partial$ の実現形になる。
r2 emssr60
r2 emssr61
---
r2 emssr62
r2 emssr63
## 閉包
r2 emssr64
r2 emssr65
| 音節 | 記号 | 型 |
r2 emssr66
|---|---|---|
r2 emssr67
| `ya` | $\Omega$ の開き | $I\to I$ |
r2 emssr68
| `yi` | $\Omega$ の閉じ | $B\to I$ |
r2 emssr69
r2 emssr70
開きの層で本体の先頭箱番号と frontier を控え、閉じの層で単調フラグを一本受けて
r2 emssr71
後退分岐を置く。フラグが $0$ の間は本体へ戻る。
r2 emssr72
r2 emssr73
$$
r2 emssr74
F:X\otimes A\to A,
r2 emssr75
\qquad
r2 emssr76
\Omega_a[F]:X\to A
r2 emssr77
\tag{構成語 5.4}
r2 emssr78
$$
r2 emssr79
r2 emssr80
$$
r2 emssr81
h_n\le h_{n+1},
r2 emssr82
\qquad
r2 emssr83
\bigvee_n h_n=1\ \text{で境界へ集積}
r2 emssr84
\tag{構成語 5.5}
r2 emssr85
$$
r2 emssr86
r2 emssr87
有限高さの単調反復は有限段で不動点になる(04 定理 9.1)。
r2 emssr88
r2 emssr89
状態は作業領域が持つ。frontier は開きと閉じで同じでなければならないので、
r2 emssr90
繰り返しの間に持ち越す値はワイヤに載らない。
r2 emssr91
r2 emssr92
```
r2 emssr93
hu ka ya ka hu ka so ka yi
r2 emssr94
```
r2 emssr95
r2 emssr96
値 $1$。`examples/vocabulary/yi_omega.cmn`
r2 emssr97
r2 emssr98
---
r2 emssr99
r2 emssr100
## 平文へ届かない四つ
r2 emssr101
r2 emssr102
$\mathrm{Cst}$、$\mathrm{EqBr}$、$\mathrm{LtBr}$、$\mathrm{Br}$ は正準添字を取る。
r2 emssr103
平文に数字も label も現れないので(16 §3.1)、この四つは番号の席を占めるだけになる。
r2 emssr104
r2 emssr105
代わりに置く道は次のとおり。
r2 emssr106
r2 emssr107
| 要るもの | 平文での書き方 |
r2 emssr108
|---|---|
r2 emssr109
| 定数 | $\mathsf{one}$(`hu`)と算術の合成 |
r2 emssr110
| 条件分岐 | $\operatorname{sel}(c,a,b)=c\star a\oplus(1\ominus c)\star b$ |
r2 emssr111
| 後退分岐 | `ya` と `yi` の対 |
r2 emssr112
r2 emssr113
$$
r2 emssr114
\text{分岐命令は要らない。平文の側に literal も label も現れない}
r2 emssr115
\tag{16.5.11}
r2 emssr116
$$
r2 emssr117
r2 emssr118
## 参照
r2 emssr119
r2 emssr120
- [dyad](dyad.md) 二値を作る八箱
r2 emssr121
- [toolchain/01_build](../toolchain/01_build.md) 走らせ方