リポジトリ / emssr / independent_common_compiler
r2
| r2 emssr | 1 | # 作業領域と外部環境 |
| r2 emssr | 2 | |
| r2 emssr | 3 | [← 総表](Index.md) |
| r2 emssr | 4 | |
| r2 emssr | 5 | 意味レジストリ $\mathcal M$ の原子はそのまま降りる(16 §5.0)。正準添字を取らないので、 |
| r2 emssr | 6 | 平文の側から届く。 |
| r2 emssr | 7 | |
| r2 emssr | 8 | $$ |
| r2 emssr | 9 | \operatorname{ord}(g)\in[0,11]\ \Longrightarrow\ \mathcal M\ \text{と一致}, |
| r2 emssr | 10 | \qquad |
| r2 emssr | 11 | \text{だから降下は名前を変えない} |
| r2 emssr | 12 | $$ |
| r2 emssr | 13 | |
| r2 emssr | 14 | --- |
| r2 emssr | 15 | |
| r2 emssr | 16 | ## 作業領域 |
| r2 emssr | 17 | |
| r2 emssr | 18 | | 音節 | 記号 | 型 | 意味 | |
| r2 emssr | 19 | |---|---|---|---| |
| r2 emssr | 20 | | `mi` | $\mathrm{Load}$ | $D\to D$ | 語番号から読む | |
| r2 emssr | 21 | | `mu` | $\mathrm{Store}$ | $D\otimes D\to I$ | 語番号へ書く | |
| r2 emssr | 22 | |
| r2 emssr | 23 | 番地も値もワイヤで来るので、正準添字が要らない。語の byte 幅は architecture package が |
| r2 emssr | 24 | 持つので source に現れない(§32.2)。 |
| r2 emssr | 25 | |
| r2 emssr | 26 | $\mathrm{Load}$ は深度を落とす唯一の箱になる。語には分子だけが載るためである。 |
| r2 emssr | 27 | |
| r2 emssr | 28 | ### 退避語 |
| r2 emssr | 29 | |
| r2 emssr | 30 | 二値の八箱は既定値を語へ退避する(16 §5.3)。退避語は本文の語の上へ置く。 |
| r2 emssr | 31 | |
| r2 emssr | 32 | $$ |
| r2 emssr | 33 | S=1+\max\Bigl(31,\ |\Gamma^+|-1,\ \bigl\{\text{定数から畳める Load / Store の番地}\bigr\}\Bigr) |
| r2 emssr | 34 | $$ |
| r2 emssr | 35 | |
| r2 emssr | 36 | 一段目の降下は $S$ を決めるためだけに走る。退避語は本文の番地へ流れないので、 |
| r2 emssr | 37 | 二段目の番地は一段目と同じになる。 |
| r2 emssr | 38 | |
| r2 emssr | 39 | --- |
| r2 emssr | 40 | |
| r2 emssr | 41 | ## 外部環境への報告 |
| r2 emssr | 42 | |
| r2 emssr | 43 | | 音節 | 記号 | 型 | 実行 | |
| r2 emssr | 44 | |---|---|---|---| |
| r2 emssr | 45 | | `me` | $\mathrm{Ok}$ | $I\to I$ | 成功報告。実行を閉じる | |
| r2 emssr | 46 | | `di` | $\mathrm{Ko}$ | $I\to I$ | 失敗報告。実行を閉じる | |
| r2 emssr | 47 | | `du` | $\mathrm{Put}$ | $D\to I$ | 一 byte 出力。実行を閉じない | |
| r2 emssr | 48 | |
| r2 emssr | 49 | $\mathrm{Put}$ は $[0,255]$ の整数として読み、範囲外は下位 8 bit を採る。 |
| r2 emssr | 50 | |
| r2 emssr | 51 | ``` |
| r2 emssr | 52 | hu ka du ka me |
| r2 emssr | 53 | ``` |
| r2 emssr | 54 | |
| r2 emssr | 55 | `examples/vocabulary/du_put.cmn`。境界が $I$ なので出力語を持たない。 |
| r2 emssr | 56 | |
| r2 emssr | 57 | $\varphi_\partial$ は原子に入らない。唯一の非可逆観測は path separation と外部報告の対で現れる。 |
| r2 emssr | 58 | $\mathrm{EqBr}$ / $\mathrm{LtBr}$ が連続量を二つの経路へ分け、$\mathrm{Ok}$ / $\mathrm{Ko}$ が |
| r2 emssr | 59 | その結果を境界の外へ出す。この二段が $\varphi_\partial$ の実現形になる。 |
| r2 emssr | 60 | |
| r2 emssr | 61 | --- |
| r2 emssr | 62 | |
| r2 emssr | 63 | ## 閉包 |
| r2 emssr | 64 | |
| r2 emssr | 65 | | 音節 | 記号 | 型 | |
| r2 emssr | 66 | |---|---|---| |
| r2 emssr | 67 | | `ya` | $\Omega$ の開き | $I\to I$ | |
| r2 emssr | 68 | | `yi` | $\Omega$ の閉じ | $B\to I$ | |
| r2 emssr | 69 | |
| r2 emssr | 70 | 開きの層で本体の先頭箱番号と frontier を控え、閉じの層で単調フラグを一本受けて |
| r2 emssr | 71 | 後退分岐を置く。フラグが $0$ の間は本体へ戻る。 |
| r2 emssr | 72 | |
| r2 emssr | 73 | $$ |
| r2 emssr | 74 | F:X\otimes A\to A, |
| r2 emssr | 75 | \qquad |
| r2 emssr | 76 | \Omega_a[F]:X\to A |
| r2 emssr | 77 | \tag{構成語 5.4} |
| r2 emssr | 78 | $$ |
| r2 emssr | 79 | |
| r2 emssr | 80 | $$ |
| r2 emssr | 81 | h_n\le h_{n+1}, |
| r2 emssr | 82 | \qquad |
| r2 emssr | 83 | \bigvee_n h_n=1\ \text{で境界へ集積} |
| r2 emssr | 84 | \tag{構成語 5.5} |
| r2 emssr | 85 | $$ |
| r2 emssr | 86 | |
| r2 emssr | 87 | 有限高さの単調反復は有限段で不動点になる(04 定理 9.1)。 |
| r2 emssr | 88 | |
| r2 emssr | 89 | 状態は作業領域が持つ。frontier は開きと閉じで同じでなければならないので、 |
| r2 emssr | 90 | 繰り返しの間に持ち越す値はワイヤに載らない。 |
| r2 emssr | 91 | |
| r2 emssr | 92 | ``` |
| r2 emssr | 93 | hu ka ya ka hu ka so ka yi |
| r2 emssr | 94 | ``` |
| r2 emssr | 95 | |
| r2 emssr | 96 | 値 $1$。`examples/vocabulary/yi_omega.cmn` |
| r2 emssr | 97 | |
| r2 emssr | 98 | --- |
| r2 emssr | 99 | |
| r2 emssr | 100 | ## 平文へ届かない四つ |
| r2 emssr | 101 | |
| r2 emssr | 102 | $\mathrm{Cst}$、$\mathrm{EqBr}$、$\mathrm{LtBr}$、$\mathrm{Br}$ は正準添字を取る。 |
| r2 emssr | 103 | 平文に数字も label も現れないので(16 §3.1)、この四つは番号の席を占めるだけになる。 |
| r2 emssr | 104 | |
| r2 emssr | 105 | 代わりに置く道は次のとおり。 |
| r2 emssr | 106 | |
| r2 emssr | 107 | | 要るもの | 平文での書き方 | |
| r2 emssr | 108 | |---|---| |
| r2 emssr | 109 | | 定数 | $\mathsf{one}$(`hu`)と算術の合成 | |
| r2 emssr | 110 | | 条件分岐 | $\operatorname{sel}(c,a,b)=c\star a\oplus(1\ominus c)\star b$ | |
| r2 emssr | 111 | | 後退分岐 | `ya` と `yi` の対 | |
| r2 emssr | 112 | |
| r2 emssr | 113 | $$ |
| r2 emssr | 114 | \text{分岐命令は要らない。平文の側に literal も label も現れない} |
| r2 emssr | 115 | \tag{16.5.11} |
| r2 emssr | 116 | $$ |
| r2 emssr | 117 | |
| r2 emssr | 118 | ## 参照 |
| r2 emssr | 119 | |
| r2 emssr | 120 | - [dyad](dyad.md) 二値を作る八箱 |
| r2 emssr | 121 | - [toolchain/01_build](../toolchain/01_build.md) 走らせ方 |