控制。豫
yuyan · 454 行 · 22736 字节 · 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 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「平台」之书。
寻观「客体二号」之「基础」之书。
寻观「客体二号」之「实例」之书。
寻观「客体二号」之「模块」之书。
「:文言:解释器之控制:块类型、立即数之越、边表之扫、标签栈与分支、返回。汉语:解释器控制流基础:块类型解码、立即数跳过、函数边表扫描(每个字节偏移 8 字节 [end 之后的位置, else 之后的位置])、标签栈与分支、函数返回。:」
「:文言:块类型:设 状态_块参 与 状态_块果,返回新位置。汉语:读块类型,写入 状态_块参、状态_块果,返回其后的位置。:」
「置块签名」乃化「整数」而化「整数」而「有」也。
「置块签名」者会「参」而会「果」而
虑「无」者(「写四」于「状态_块参」于「参」)而
「写四」于「状态_块果」于「果」
也。
「读块类型」乃化「整数」而「整数」也。
「读块类型」者会「址」而
虑「码」者「读一」于「址」而
若「等」于「码」于「六四」
则
((「置块签名」于「零」于「零」);
「加」于「址」于「一」)
否则
(
若「或者」于(「等」于「码」于「九九」)于(「等」于「码」于「一零零」)
则
((「读有符号变长」于(「加」于「址」于「一」));
(「置块签名」于「零」于「一」);
「读四」于「状态_读址」)
否则
(
若「且」
于(「不等于」于(「位与」于「码」于「六四」)于「零」)
于(「等零」于(「位与」于「码」于「一二八」))
则
((「置块签名」于「零」于「一」);
「加」于「址」于「一」)
否则
虑「类型号」者「读有符号变长」于「址」
而
虑「类型」者「类型条」于「类型号」
而
虑「无」者
(「置块签名」于(「读字段」于「类型」于「类型条_甲」)于(「读字段」于「类型」于「类型条_乙」))
而
「读四」于「状态_读址」
)
)
也。
「:文言:立即数之越:址在操作码之后。汉语:跳过一条指令的立即数;址指向操作码之后。GC 前缀(0xFB)与杂项前缀(0xFC)按子操作码分别处理。:」
「跳过GC立即数」乃化「整数」而化「整数」而「整数」也。
「跳过GC立即数」者会「子」而会「址」而
鉴「子」而
有「零」则「变长后」于「址」
或有「一」则「变长后」于「址」
或有「六」则「变长后」于「址」
或有「七」则「变长后」于「址」
或有「一一」则「变长后」于「址」
或有「一二」则「变长后」于「址」
或有「一三」则「变长后」于「址」
或有「一四」则「变长后」于「址」
或有「一六」则「变长后」于「址」
或有「二」则
「变长们后」于「址」于「二」
或有「三」则
「变长们后」于「址」于「二」
或有「四」则
「变长们后」于「址」于「二」
或有「五」则
「变长们后」于「址」于「二」
或有「八」则
「变长们后」于「址」于「二」
或有「九」则
「变长们后」于「址」于「二」
或有「一零」则
「变长们后」于「址」于「二」
或有「一七」则
「变长们后」于「址」于「二」
或有「一八」则
「变长们后」于「址」于「二」
或有「一九」则
「变长们后」于「址」于「二」
或有「二零」则「变长后」于「址」
或有「二一」则「变长后」于「址」
或有「二二」则「变长后」于「址」
或有「二三」则「变长后」于「址」
或有「二四」则
「变长们后」于(「加」于「址」于「一」)于「三」
或有「二五」则
「变长们后」于(「加」于「址」于「一」)于「三」
或有「其他」则「址」
也。
「跳过杂项立即数」乃化「整数」而化「整数」而「整数」也。
「跳过杂项立即数」者会「子」而会「址」而
鉴「子」而
有「八」则
「加」于(「变长后」于「址」)于「一」
或有「九」则「变长后」于「址」
或有「一三」则「变长后」于「址」
或有「一五」则「变长后」于「址」
或有「一六」则「变长后」于「址」
或有「一七」则「变长后」于「址」
或有「一零」则
「加」于「址」于「二」
或有「一一」则
「加」于「址」于「一」
或有「一二」则
「变长们后」于「址」于「二」
或有「一四」则
「变长们后」于「址」于「二」
或有「其他」则「址」
也。
「跳过GC前缀」乃化「整数」而「整数」也。
「跳过GC前缀」者会「址」而
虑「子」者「读无符号变长」于「址」而
虑「后」者「读四」于「状态_读址」而
「跳过GC立即数」于「子」于「后」
也。
「跳过杂项前缀」乃化「整数」而「整数」也。
「跳过杂项前缀」者会「址」而
虑「子」者「读无符号变长」于「址」而
虑「后」者「读四」于「状态_读址」而
「跳过杂项立即数」于「子」于「后」
也。
「跳过分支表立即数」乃化「整数」而「整数」也。
「跳过分支表立即数」者会「址」而
虑「个数」者「读无符号变长」于「址」而
「变长们后」于(「读四」于「状态_读址」)于(「加」于「个数」于「一」)
也。
「跳过带类型选择立即数」乃化「整数」而「整数」也。
「跳过带类型选择立即数」者会「址」而
虑「个数」者「读无符号变长」于「址」而
「跳过值类型们」于(「读四」于「状态_读址」)于「个数」
也。
「跳过捕获子句们」乃化「整数」而化「整数」而「整数」也。
「跳过捕获子句们」者会「址」而
会「个数」而
递归虑「逐」其化「整数」而化「整数」而「整数」者会「位」而会「游」而
若「小于」于「位」于「个数」
则
虑「种」者「读一」于「游」而
虑「后」者「加」于「游」于「一」而
「逐」
于(「加」于「位」于「一」)
于(「变长们后」于「后」于(「选择」于(「小于」于「种」于「二」)于「二」于「一」))
否则
「游」
而
「逐」于「零」于「址」
也。
「跳过尝试表立即数」乃化「整数」而「整数」也。
「跳过尝试表立即数」者会「址」而
虑「后」者「读块类型」于「址」而
虑「个数」者「读无符号变长」于「后」而
「跳过捕获子句们」于(「读四」于「状态_读址」)于「个数」
也。
「跳过立即数」乃化「整数」而化「整数」而「整数」也。
「跳过立即数」者会「操作码」而会「址」而
若「且」于(「无符号大等」于「操作码」于「四零」)于(「无符号小等」于「操作码」于「六二」)
则
「变长们后」于「址」于「二」
否则
鉴「操作码」而
有「二」则「读块类型」于「址」
或有「三」则「读块类型」于「址」
或有「四」则「读块类型」于「址」
或有「八」则「变长后」于「址」
或有「一二」则「变长后」于「址」
或有「一三」则「变长后」于「址」
或有「一六」则「变长后」于「址」
或有「一八」则「变长后」于「址」
或有「二零」则「变长后」于「址」
或有「二一」则「变长后」于「址」
或有「三二」则「变长后」于「址」
或有「三三」则「变长后」于「址」
或有「三四」则「变长后」于「址」
或有「三五」则「变长后」于「址」
或有「三六」则「变长后」于「址」
或有「三七」则「变长后」于「址」
或有「三八」则「变长后」于「址」
或有「六五」则「变长后」于「址」
或有「六六」则「变长后」于「址」
或有「二零八」则「变长后」于「址」
或有「二一零」则「变长后」于「址」
或有「二一三」则「变长后」于「址」
或有「二一四」则「变长后」于「址」
或有「一七」则
「变长们后」于「址」于「二」
或有「一九」则
「变长们后」于「址」于「二」
或有「一四」则
「跳过分支表立即数」于「址」
或有「二八」则
「跳过带类型选择立即数」于「址」
或有「三一」则
「跳过尝试表立即数」于「址」
或有「六三」则
「加」于「址」于「一」
或有「六四」则
「加」于「址」于「一」
或有「六七」则
「加」于「址」于「四」
或有「六八」则
「加」于「址」于「八」
或有「二五一」则
「跳过GC前缀」于「址」
或有「二五二」则
「跳过杂项前缀」于「址」
或有「其他」则「址」
也。
「:文言:边表之扫:每字节偏移八字节,记 end 与 else 之后位。汉语:扫描函数体,建立边表:对每个 block/loop/if/try_table 的起始字节偏移,记录 end 之后的位置(+0)与 else 之后的位置(+4)。控制栈放在暂存区 扫描栈。:」
「是开块指令」乃化「整数」而「爻」也。
「是开块指令」者会「码」而
「或者」
于(「或者」于(「等」于「码」于「二」)于(「等」于「码」于「三」))
于(「或者」于(「等」于「码」于「四」)于(「等」于「码」于「三一」))
也。
「扫描开块」乃化「整数」而化「整数」而「有」也。
「扫描开块」者会「栈顶」而会「后」而
虑「无」者
(「若则致命」于(「无符号大等」于「栈顶」于「扫描栈限」)于「一二三」于(「静态串」于『控制嵌套过深』))而
虑「无」者(「写四」于「栈顶」于(「减」于「后」于「一」))而
「写四」于(「加」于「栈顶」于「四」)于「零」
也。
「扫描否则」乃化「整数」而化「整数」而化「整数」而化「整数」而「有」也。
「扫描否则」者会「栈顶」而会「后」而会「起」而会「边」而
虑「无」者
(「若则致命」于(「无符号小等」于「栈顶」于「扫描栈」)于「一二三」于(「静态串」于『else 无对应 if』))而
虑「无」者
(「写四」于(「减」于「栈顶」于「四」)于(「减」于「后」于「一」))
而
「写四」
于(「加」
于(「加」于「边」于(「乘」于(「减」于(「读四」于(「减」于「栈顶」于「八」))于「起」)于「八」))于「四」)
于「后」
也。
「扫描结束」乃化「整数」而化「整数」而化「整数」而化「整数」而「有」也。
「扫描结束」者会「栈顶」而会「后」而会「起」而会「边」而
虑「开始」者「读四」于「栈顶」而
虑「否则位」者「读四」于(「加」于「栈顶」于「四」)而
虑「无」者
(「写四」于(「加」于「边」于(「乘」于(「减」于「开始」于「起」)于「八」))于「后」)而
若「不等于」于「否则位」于「零」
则
「写四」于(「加」于「边」于(「乘」于(「减」于「否则位」于「起」)于「八」))于「后」
否则
「元」
也。
「扫描函数」乃化「整数」而「有」也。
「扫描函数」者会「号」而
虑「条」者「函数条」于「号」而
虑「起」者「读字段」于「条」于「函数条_代码起」而
虑「止」者「读字段」于「条」于「函数条_代码止」而
虑「大小」者「乘」于(「减」于「止」于「起」)于「八」而
虑「边」者「读四」于「状态_边表池」而
虑「无」者
(「若则致命」
于(「无符号大于」于(「加」于「边」于「大小」)于(「读四」于「状态_边表尾」))
于「一二三」
于(「静态串」于『边表池不足』))而
虑「无」者
(「写四」于「状态_边表池」于(「加」于「边」于「大小」))而
虑「无」者(「写字段」于「条」于「函数条_边表」于「边」)而
递归虑「逐」其化「整数」而化「整数」而「整数」者会「址」而会「栈顶」而
若「无符号小于」于「址」于「止」
则
虑「操作码」者「读一」于「址」而
虑「后」者「加」于「址」于「一」而
若「是开块指令」于「操作码」
则
((「扫描开块」于「栈顶」于「后」);
「逐」
于(「跳过立即数」于「操作码」于「后」)
于(「加」于「栈顶」于「八」))
否则
(
若「等」于「操作码」于「五」
则
((「扫描否则」于「栈顶」于「后」于「起」于「边」);
「逐」于「后」于「栈顶」)
否则
(
若「等」于「操作码」于「一一」
则
(
若「等」于「栈顶」于「扫描栈」
则
「逐」于「止」于「栈顶」
否则
((「扫描结束」于(「减」于「栈顶」于「八」)于「后」于「起」于「边」);
「逐」于「后」于(「减」于「栈顶」于「八」))
)
否则
「逐」于(「跳过立即数」于「操作码」于「后」)于「栈顶」
)
)
否则
「栈顶」
而
虑「终栈顶」者「逐」于「起」于「扫描栈」而
「若则致命」于(「不等于」于「终栈顶」于「扫描栈」)于「一二三」
于(「静态串」于『控制结构未闭合』)
也。
「边偏」乃化「整数」而「整数」也。
「边偏」者会「号」而
若「小于」于「号」于「零」则
「零」
否则
虑「条」者「函数条」于「号」而
「减」于(「读字段」于「条」于「函数条_边表」)于(「乘」于(「读字段」于「条」于「函数条_代码起」)于「八」)
也。
「:文言:标签栈与分支。汉语:压标签;弹出尝试表的处理帧;分支到相对深度 n(返回新栈针,新指令针放在 状态_新指令针,零表示函数级返回,结果已在栈顶)。:」
「压标签」乃化「整数」而化「整数」而化「整数」而化「整数」而「有」也。
「压标签」者会「目标」而会「基」而会「元数」而会「种类」而
虑「顶」者「读四」于「状态_标签顶」而
虑「无」者
(「若则致命」
于(「无符号大等」于「顶」于(「读四」于「状态_标签栈限」))于「一二二」
于(「静态串」于『栈溢出:递归过深』))而
虑「无」者(「写字段」于「顶」于「标签_目标」于「目标」)而
虑「无」者(「写字段」于「顶」于「标签_栈基」于「基」)而
虑「无」者(「写字段」于「顶」于「标签_元数」于「元数」)而
虑「无」者(「写字段」于「顶」于「标签_种类」于「种类」)而
「写四」于「状态_标签顶」于(「加」于「顶」于「标签栈条长」)
也。
「弹出处理帧们」乃化「整数」而化「整数」而「有」也。
「弹出处理帧们」者会「顶」而
会「新顶」而
递归虑「逐」其化「整数」而「有」者会「位」而
若「无符号大于」于「位」于「新顶」
则
虑「前」者「减」于「位」于「标签栈条长」而
虑「无」者
(
若「等」于(「读字段」于「前」于「标签_种类」)于「标签尝试」
则
「写四」
于「状态_处理顶」
于(「减」于(「读四」于「状态_处理顶」)于「处理条长」)
否则
「元」
)
而
「逐」于「前」
否则
「元」
而
「逐」于「顶」
也。
「分支」乃化「整数」而化「整数」而「整数」也。
「分支」者会「深」而会「栈针」而
虑「顶」者「读四」于「状态_标签顶」而
虑「标」者
「减」于「顶」于(「乘」于(「加」于「深」于「一」)于「标签栈条长」)而
虑「种」者「读字段」于「标」于「标签_种类」而
若「等」于「种」于「标签函数」
则
((「写四」于「状态_新指令针」于「零」);
「栈针」)
否则
虑「无」者
(若「等」于「种」于「标签循环」则「中断点」于「元」否则「元」)
而
虑「元数」者「读字段」于「标」于「标签_元数」
而
虑「基」者「读字段」于「标」于「标签_栈基」
而
虑「新顶」者
「选择」于(「等」于「种」于「标签循环」)于(「加」于「标」于「标签栈条长」)于「标」
而
虑「无」者(「弹出处理帧们」于「顶」于「新顶」)
而
虑「无」者(「写四」于「状态_标签顶」于「新顶」)
而
虑「字节数」者「乘」于「元数」于「八」
而
虑「无」者
(
若「不等于」于(「加」于「基」于「字节数」)于「栈针」则
「拷贝」于「基」于(「减」于「栈针」于「字节数」)于「字节数」
否则
「元」
)
而
虑「无」者(「写四」于「状态_新指令针」于(「读四」于「标」))而
「加」于「基」于「字节数」
也。
「:文言:函数之返:弹帧而复其实例;帧带返回之钩者,退出解释循环而请入口之驱动装箱其果。汉语:函数返回:把结果移到帧针处,弹出调用帧,若帧里记的调用者实例与当前不同就切回去,恢复现场(新指令针、新帧针、当前函数、标签顶、处理顶、边偏),返回新栈针;若帧带返回钩(“调用导出”的帧),登记“装箱结果”请求并令解释循环退出,由入口的驱动循环把结果装箱后从调用者的下一条指令续行。:」
「返回处理」乃化「整数」而化「整数」而「整数」也。
「返回处理」者会「栈针」而会「帧针」而
虑「条」者「函数条」于(「读四」于「状态_函」)而
虑「字节数」者
「乘」于(「读字段」于「条」于「函数条_结果数」)于「八」而
虑「无」者
(
若「不等于」于(「加」于「帧针」于「字节数」)于「栈针」则
「拷贝」于「帧针」于(「减」于「栈针」于「字节数」)于「字节数」
否则
「元」
)
而
虑「帧」者「减」于(「读四」于「状态_帧顶」)于「帧条长」而
虑「无」者(「写四」于「状态_帧顶」于「帧」)而
虑「无」者(「切换实例」于(「读字段」于「帧」于「帧_实例」))而
虑「无」者(「写四」于「状态_新指令针」于(「读四」于「帧」))而
虑「无」者
(「写四」于「状态_新帧针」于(「读字段」于「帧」于「四」))
而
虑「无」者(「写四」于「状态_函」于(「读字段」于「帧」于「八」))而
虑「无」者
(「写四」于「状态_标签顶」于(「读字段」于「帧」于「一二」))
而
虑「无」者
(「写四」于「状态_处理顶」于(「读字段」于「帧」于「一六」))
而
虑「无」者
(「写四」于「状态_边偏」于(「边偏」于(「读四」于「状态_函」)))
而
虑「无」者
(
若「不等于」于(「读字段」于「帧」于「帧_钩」)于「零」
则
((「写四」于「状态_请求」于「请求_装箱结果」);
(「写四」于「状态_请求参一」于(「读字段」于「帧」于「帧_钩」));
(「写四」于「状态_续指令针」于(「读四」于「帧」));
(「写四」于「状态_续帧针」于(「读字段」于「帧」于「四」));
(「写四」于「状态_续栈针」于(「加」于「帧针」于「字节数」));
(「写四」于「状态_新指令针」于「零」))
否则
「元」
)
而
「加」于「帧针」于「字节数」
也。