编译步骤/代码生成/回收值桥接。豫
yuyan · 313 行 · 13595 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
寻观「标准库」之书。
寻观「编译器核心」之「网页汇编核心」之「回收模块」之书。
寻观「编译器核心」之「编译步骤」之「代码生成」之「回收运行时」之书。
「:
文言:宿主之值桥:宿主以之辨客值之类、读写整数小数元组字节。其型即取客体运行时之型,与编译器所生之码同;线性内存唯宿主换字节之区。
汉语:节点与浏览器宿主使用的值桥模块:宿主通过它判断客体值的种类、读写整数、小数、元组与字节串。结构类型直接取自客体运行时,与编译器生成的代码一致;线性内存只作宿主交换字节的区域。由原先手写的 值桥接.wat 逐条改写而来。
:」
「:文言:取参之令。汉语:读取参数 $v。:」
「值桥取参」者「回收局部取」于『$v』也。
「:文言:试其堆型,合则返所定之号。汉语:若 $v 是指定堆类型,就返回给定的种类号。:」
「值桥试类」乃化「回收堆型」而化「整数」而「回收串」也。
「值桥试类」者会「堆」而会「号」而
「回收令列」
于(「列」【
「值桥取参」,
「回收引用测」于「阴」于「堆」,
「回收若」于『』于「回收块无果」,
「回收整三二常」于「号」,
「回收返回」,
「回收结束」
】)
也。
「:文言:导出之函:先函后出,出之次即函之次。汉语:导出函数:函数项之后紧跟其导出项,导出段的顺序与函数顺序一致。:」
「值桥导出函数」乃
化「字符串」而
化(「列」于「回收值型」)而
化(「列」于「字符串」)而
化(「列」于「回收值型」)而
化(「列」于「回收局部」)而
化「回收串」而
「回收项串」
也。
「值桥导出函数」者会「外名」而会「参型们」而会「参名们」而会「果型们」而会「局部们」而会「体」而
「回收项列」
于(「列」【
「回收函数项」于(『$』附「外名」)于(「回收型内联」于「参型们」于「果型们」)于「参名们」于「局部们」于「体」,
「回收导出项」于「外名」于「回收出函数」于(『$』附「外名」)
】)
也。
「:文言:辨客值之类:空者〇,小整一,字节二,元组三,大整四,小数五;余者不可至。汉语:判断客值种类,宿主 JS 依这些编号分派:空为 0,小整数(i31)为 1,字节串为 2,元组为 3,大整数为 4,小数为 5;其他类型不可达。:」
「值桥种类」乃「回收项串」也。
「值桥种类」者
「值桥导出函数」
于『kind』
于(「列」【「回收等引用」】)
于(「列」【『$v』】)
于(「列」【「回收整三二」】)
于(「罄」授以「回收局部」)
于(「回收串并」
于(「列」【
「回收令列」于(「列」【
「值桥取参」,
「回收引用为空」,
「回收若」于『』于「回收块无果」,
「回收整三二常」于「零」,
「回收返回」,
「回收结束」
】),
「值桥试类」于「回收堆小整」于「一」,
「值桥试类」于(「回收堆名」于『$bytes』)于「二」,
「值桥试类」于(「回收堆名」于『$tuple』)于「三」,
「值桥试类」于(「回收堆名」于『$big』)于「四」,
「值桥试类」于(「回收堆名」于『$float』)于「五」,
「回收单令」于「回收不可达」
】))
也。
「值桥整数」者
「值桥导出函数」
于『int』
于(「列」【「回收等引用」】)
于(「列」【『$v』】)
于(「列」【「回收整六四」】)
于(「罄」授以「回收局部」)
于(「回收令列」
于(「列」【
「值桥取参」,
「回收引用测」于「阴」于「回收堆小整」,
「回收若」于『』于(「回收块单果」于「回收整六四」),
「值桥取参」,
「回收引用转」于「阴」于「回收堆小整」,
「回收小整取有符号」,
「回收整三二有符号扩六四」,
「回收否则」,
「值桥取参」,
「回收引用转」于「阴」于(「回收堆名」于『$big』),
「回收结构取」于『$big』于「零」,
「回收结束」
】))
也。
「值桥新整数」者
「值桥导出函数」
于『new_int』
于(「列」【「回收整六四」】)
于(「列」【『$v』】)
于(「列」【「回收等引用」】)
于(「罄」授以「回收局部」)
于(「回收令列」
于(「列」【
「值桥取参」,
「回收整六四常」于(「整数操作」之「理解整数」于『-1073741824』),
「回收整六四有符号大等」,
「值桥取参」,
「回收整六四常」于(「整数操作」之「理解整数」于『1073741823』),
「回收整六四有符号小等」,
「回收整三二与」,
「回收若」于『』于(「回收块单果」于「回收等引用」),
「值桥取参」,
「回收整六四截三二」,
「回收转小整」,
「回收否则」,
「值桥取参」,
「回收结构新」于『$big』,
「回收结束」
】))
也。
「值桥小数」者
「值桥导出函数」
于『float』
于(「列」【「回收等引用」】)
于(「列」【『$v』】)
于(「列」【「回收浮六四」】)
于(「罄」授以「回收局部」)
于(「回收令列」
于(「列」【
「值桥取参」,
「回收引用转」于「阴」于(「回收堆名」于『$float』),
「回收结构取」于『$float』于「零」
】))
也。
「值桥新小数」者
「值桥导出函数」
于『new_float』
于(「列」【「回收浮六四」】)
于(「列」【『$v』】)
于(「列」【「回收名引用」于『$float』】)
于(「罄」授以「回收局部」)
于(「回收令列」于(「列」【「值桥取参」,「回收结构新」于『$float』】))
也。
「值桥元组长」者
「值桥导出函数」
于『tuple_len』
于(「列」【「回收等引用」】)
于(「列」【『$v』】)
于(「列」【「回收整三二」】)
于(「罄」授以「回收局部」)
于(「回收令列」于(「列」【「值桥取参」,「回收引用转」于「阴」于(「回收堆名」于『$tuple』),「回收数组长」】))
也。
「值桥元组取」者
「值桥导出函数」
于『tuple_get』
于(「列」【「回收等引用」,「回收整三二」】)
于(「列」【『$v』,『$i』】)
于(「列」【「回收等引用」】)
于(「罄」授以「回收局部」)
于(「回收令列」
于(「列」【
「值桥取参」,
「回收引用转」于「阴」于(「回收堆名」于『$tuple』),
「回收局部取」于『$i』,
「回收数组取」于『$tuple』
】))
也。
「值桥元组存」者
「值桥导出函数」
于『tuple_set』
于(「列」【「回收等引用」,「回收整三二」,「回收等引用」】)
于(「列」【『$v』,『$i』,『$x』】)
于(「罄」授以「回收值型」)
于(「罄」授以「回收局部」)
于(「回收令列」
于(「列」【
「值桥取参」,
「回收引用转」于「阴」于(「回收堆名」于『$tuple』),
「回收局部取」于『$i』,
「回收局部取」于『$x』,
「回收数组存」于『$tuple』
】))
也。
「值桥新元组」者
「值桥导出函数」
于『new_tuple』
于(「列」【「回收整三二」】)
于(「列」【『$n』】)
于(「列」【「回收名引用」于『$tuple』】)
于(「罄」授以「回收局部」)
于(「回收令列」于(「列」【「回收局部取」于『$n』,「回收数组新默认」于『$tuple』】))
也。
「值桥字节长」者
「值桥导出函数」
于『bytes_len』
于(「列」【「回收等引用」】)
于(「列」【『$v』】)
于(「列」【「回收整三二」】)
于(「罄」授以「回收局部」)
于(「回收令列」于(「列」【「值桥取参」,「回收引用转」于「阴」于(「回收堆名」于『$bytes』),「回收数组长」】))
也。
「:文言:逐字而行,至长乃止,每行加一。汉语:按下标从 0 到长度逐个处理字节的循环(块 $done 包循环 $loop),体为每步要做的事。:」
「值桥逐字」乃化「回收串」而「回收串」也。
「值桥逐字」者会「体」而
「回收串并」
于(「列」【
「回收令列」于(「列」【
「回收块」于『$done』于「回收块无果」,
「回收循环」于『$loop』于「回收块无果」,
「回收局部取」于『$i』,
「回收局部取」于『$n』,
「回收整三二无符号大等」,
「回收条件跳」于(「回收名标」于『$done』)
】),
「体」,
「回收令列」于(「列」【
「回收局部取」于『$i』,
「回收整三二常」于「一」,
「回收整三二加」,
「回收局部存」于『$i』,
「回收跳」于(「回收名标」于『$loop』),
「回收结束」,
「回收结束」
】)
】)
也。
「值桥字节出」者
「值桥导出函数」
于『bytes_out』
于(「列」【「回收等引用」】)
于(「列」【『$v』】)
于(「罄」授以「回收值型」)
于(「列」【『$a』与(「回收名引用」于『$bytes』),『$n』与「回收整三二」,『$i』与「回收整三二」】)
于(「回收串并」
于(「列」【
「回收令列」于(「列」【
「值桥取参」,
「回收引用转」于「阴」于(「回收堆名」于『$bytes』),
「回收局部暂存」于『$a』,
「回收数组长」,
「回收局部存」于『$n』
】),
「值桥逐字」于(「回收令列」
于(「列」【
「回收局部取」于『$i』,
「回收局部取」于『$a』,
「回收局部取」于『$i』,
「回收数组取无」于『$bytes』,
「回收整三二存八」于「零」
】))
】))
也。
「值桥字节入」者
「值桥导出函数」
于『bytes_in』
于(「列」【「回收整三二」】)
于(「列」【『$n』】)
于(「列」【「回收名引用」于『$bytes』】)
于(「列」【『$a』与(「回收名引用」于『$bytes』),『$i』与「回收整三二」】)
于(「回收串并」
于(「列」【
「回收令列」于(「列」【「回收局部取」于『$n』,「回收数组新默认」于『$bytes』,「回收局部存」于『$a』】),
「值桥逐字」于(「回收令列」
于(「列」【
「回收局部取」于『$a』,
「回收局部取」于『$i』,
「回收局部取」于『$i』,
「回收整三二读八无」于「零」,
「回收数组存」于『$bytes』
】)),
「回收单令」于(「回收局部取」于『$a』)
】))
也。
「:文言:值桥之全模块,项之次同旧文。汉语:值桥的整个模块,项的顺序与原 WAT 相同:四个结构类型、导出的线性内存、各导出函数。:」
「回收值桥接」乃「回收项串」也。
「回收值桥接」者
「回收项并」
于(「列」【
「回收项列」于(「列」【
「回收运行时大整类型」,
「回收运行时元组类型」,
「回收运行时小数类型」,
「回收运行时字节类型」,
「回收内存项」于『$memory』于「一」于「可无」,
「回收导出项」于『memory』于「回收出内存」于『$memory』
】),
「值桥种类」,
「值桥整数」,
「值桥新整数」,
「值桥小数」,
「值桥新小数」,
「值桥元组长」,
「值桥元组取」,
「值桥元组存」,
「值桥新元组」,
「值桥字节长」,
「值桥字节出」,
「值桥字节入」
】)
也。