布局。豫
yuyan · 608 行 · 36620 字节 · 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 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608
寻观「底层库」之书。
「:文言:执行器之内存布局与状态格,诸址皆字节址,与验证之器相约,不可妄改。汉语:客体执行器二号的内存布局、规模参数与状态格常量。地址和大小与 `普通豫言验证。豫`、Node 夹具及原低阶执行器完全一致(0x408 模块长、0x10000 模块窗、0x884 自动格式化标志等);状态格是线性内存低处的固定地址字,供各模块共享全局状态。:」
「:文言:内存之布,诸址皆字节址。汉语:内存布局(字节地址)。:」
「状基」者「一零二四」也。 「:文言:状态格之区。汉语:状态格区 0x400–0xFFF。:」
「暂存基」者「四零九六」也。 「:文言:暂存四千零九十六字节。汉语:4 KiB 暂存。:」
「模块基」者「六五五三六」也。 「:文言:客体模块所置之窗。汉语:客体模块窗口。:」
「模块窗」者「四五八七五二」也。 「:文言:窗之大小,四百四十八千字节。汉语:窗口大小 448 KiB。:」
「区域起」者「五二四二八八」也。 「:文言:动态区之起。汉语:动态区域起点。:」
「页字节」者「六五五三六」也。
「字面串基」者「一二二八八」也。 「:文言:静态串所置之区,至 0xFFFF 止。汉语:静态字符串放在此处起的区域(至 0xFFFF)。:」
「:文言:诸栈与池之规模。汉语:规模参数。:」
「原生值栈槽数」者「八三八八六零八」也。 「:文言:原生之值栈六十四兆:预编之函数每层皆占值栈,编译器之递归深。汉语:原生系统上的值栈:8388608 槽共 64 MiB。预编后客体的每层调用都占值栈,编译器的递归很深;裸机仍用下面的 4 MiB。:」
「值栈槽数」者「五二四二八八」也。 「:文言:每槽八字节,共四兆;栈过浅则深递归易溢,过深则每任务多占内存块,此为折中。汉语:每槽 8 字节,共 4 MiB(原 1 MiB 在几千层深的递归就会溢出,编译器产出的函数帧常有几十个局部)。:」
「栈余量槽」者「四零九六」也。 「:文言:调用时须留之操作数余量。汉语:调用时要求的操作数栈余量(槽数)。:」
「标签栈项数」者「六五五三六」也。 「:文言:每项十六字节,共一兆。汉语:每项 16 字节,共 1 MiB。:」
「帧栈项数」者「三二七六八」也。 「:文言:每项三十二字节,共一兆。汉语:每项 32 字节,共 1 MiB。:」
「处理栈项数」者「二零四八」也。 「:文言:每项三十二字节,共六十四千字节。汉语:每项 32 字节,共 64 KiB。:」
「标记栈项数」者「一三一零七二」也。 「:文言:每项四字节,共五百一十二千字节。汉语:每项 4 字节,共 512 KiB。:」
「例外载荷槽」者「六四」也。
「:文言:状态格,全局状态之固定字。汉语:状态格:线性内存低处的固定地址字。:」
「状态_读址」者「一零二四」也。 「:文言:变长整数读毕之新位。汉语:LEB 读取后的新位置。:」
「状态_读高」者「一零二八」也。 「:文言:宽变长整数之高字。汉语:宽 LEB 读取的高字。:」
「状态_模块长」者「一零三二」也。
「状态_错误」者「一零三六」也。
「状态_区域顶」者「一零四零」也。 「:文言:动态区分配之针。汉语:动态区域分配指针。:」
「状态_页数」者「一零四四」也。 「:文言:内存今有之页数。汉语:当前内存页数。:」
「状态_页上限」者「一零四八」也。
「状态_类型数」者「一零五六」也。
「状态_类型表」者「一零六零」也。
「状态_函数数」者「一零六四」也。
「状态_导入数」者「一零六八」也。
「状态_函数表」者「一零七二」也。
「状态_全局数」者「一零七六」也。
「状态_全局表」者「一零八零」也。
「状态_表数」者「一零八四」也。
「状态_表描述」者「一零八八」也。 「:文言:每表十六字节:数据针、今大小、上限、元素类。汉语:每表 16 字节:数据指针、当前大小、上限、元素类别。:」
「状态_元素段数」者「一零九二」也。
「状态_元素段表」者「一零九六」也。
「状态_数据段数」者「一一零零」也。
「状态_数据段表」者「一一零四」也。
「状态_标签数」者「一一零八」也。
「状态_标签表」者「一一一二」也。
「状态_起始函数」者「一一一六」也。 「:文言:启动函数之号,无则负一。汉语:启动函数号,-1 表示没有。:」
「状态_元数据池」者「一一二零」也。 「:文言:类型字段描述等碎片池之针。汉语:类型字段描述等的碎片池指针。:」
「状态_元数据顶」者「一一二四」也。
「状态_元数据尾」者「一一二八」也。
「状态_边表池」者「一一三二」也。 「:文言:函数边表分配之针。汉语:函数边表分配指针。:」
「状态_边表尾」者「一一三六」也。
「状态_客内存」者「一一四零」也。 「:文言:客体线性内存之基址。汉语:客体线性内存基址。:」
「状态_客页数」者「一一四四」也。
「状态_客页上限」者「一一四八」也。
「状态_有瓦」者「三六八零」也。 「:文言:今装之模块含 WASI 导入则一,余则零。汉语:当前装载模块导入 WASI preview1 函数时置 1,供内存上限与调用分派使用。:」
「状态_发送失联」者「三六九六」也。 「:文言:曾于重试后仍送不出之目标,加一而记之(零为无);再送此目标者径败。汉语:发送消息 重试仍失败的目标句柄加 1(0 表示没有);此后发往同一目标的消息立刻失败,不再空转重试(目标已退出时)。:」
「:文言:标准输入之重定向、进程之环境:诸址皆在程序名区之内。汉语:标准输入重定向与进程环境:状态_输入缓冲 非零时是堆里的字节数组(整个输入文件的内容,回收时作根),读字节 从它取(取尽返回 -2 表示文件结束),零表示标准输入是控制台;状态_输入位 是已读位置。送程序名区/程序名区里,偏 输入路径偏(2560)处放子任务标准输入重定向的文件路径(长度 4 字节 + 路径字节,长度 0 为没有),偏 环境偏(3072)处放环境变量块(总长 4 字节 + 若干以零结尾的 “名=值” 字符串,总长至多 环境上限);父任务在 复制任务 前由 设置子进程输入 与 设置子进程环境 写入送区、复制之后清零;子任务改装 把它们拷进自己的程序名区,重启后 加载输入文件 读入输入文件、环境原语读环境块。:」
「状态_输入缓冲」者「三七零零」也。
「状态_输入位」者「三七零四」也。
「:文言:中断之格:计者,每四千次入函数与回跳查一次内核之标;挂起者,首任务见标则记于此,待读行者取之。汉语:控制台中断的状态格:状态_中断计 是距离下一次向内核询问 Ctrl-C 标志的剩余次数(每次进入 Wasm 函数体和每次跳回循环头减 1,减到 0 询问并重置为 4096;初值 0 所以第一次立刻询问);状态_中断挂起 非零表示首任务(壳)在运行中见到了 Ctrl-C,读行核 开始读一行时清零、读行途中见到则放弃这一行。:」
「状态_中断计」者「三七一六」也。
「状态_中断挂起」者「三七二零」也。
「:文言:回车之格:一行以 CR 终则置一,其后行首若为 LF 即弃之,CRLF 不成二行。汉语:控制台读行的回车标志:一行由 CR(真实终端按 Enter 发出的字节)结束时置 1;紧随其后的下一次读行,行首若是 LF 就丢弃,这样 CRLF 不会变成两行;读到任何其他字节都清零。:」
「状态_回车后」者「三七二四」也。
「:文言:Linux 平台之格:单字节读写之暂存,时刻之暂存(十六字节)。汉语:Linux 平台用的状态格:单字节读写的暂存(3728)、clock_gettime 的 timespec 暂存(3736 起 16 字节)。:」
「:文言:暂根:宿主原语连分数对象时,先成者存于此,回收时以为根。十六格。汉语:临时根(3760 起 16 格,每格 4 字节):宿主原语连续分配几个对象时,先分配的对象暂存在这里,回收时作为根,用完清零;输出捕获缓冲(状态_捕获出引 至 状态_捕获误容)同样作为根。:」
「状态_临时根」者「三七六零」也。
「状态_林字节」者「三七二八」也。
「状态_林时」者「三七三六」也。
「中断计初值」者「四零九六」也。
「输入路径偏」者「二五六零」也。
「环境偏」者「三零七二」也。
「环境上限」者「一零二零」也。
「状态_节表」者「一一五二」也。 「:文言:十三节各八字节(起、长),居 0x480 至 0x4E7。汉语:13 个节 × 8 字节(起点、长度):0x480–0x4E7。:」
「状态_名表」者「一二六四」也。 「:文言:导出名查找之果等。汉语:导出名查找结果等。:」
「状态_值栈基」者「一二八零」也。
「状态_值栈限」者「一二八四」也。
「状态_标签栈基」者「一二八八」也。
「状态_标签栈限」者「一二九二」也。
「状态_帧栈基」者「一二九六」也。
「状态_帧栈限」者「一三零零」也。
「状态_处理栈基」者「一三零四」也。
「状态_处理栈限」者「一三零八」也。
「状态_标记栈基」者「一三一二」也。
「状态_标记栈限」者「一三一六」也。
「状态_标记栈顶」者「一三二零」也。
「状态_标记溢出」者「一三二四」也。
「状态_堆基」者「一三二八」也。
「状态_堆顶」者「一三三二」也。 「:文言:堆已划出之末端,顶以上未用。汉语:已划出的堆末端(顶之上尚未使用)。:」
「状态_堆限」者「一三三六」也。 「:文言:内存今许之堆末。汉语:当前内存允许的堆末端。:」
「状态_位图基」者「一三四零」也。
「状态_位图字节」者「一三四四」也。
「状态_自由表」者「一三四八」也。 「:文言:小块自由表之头,三十二类,至 0x5C4 止。汉语:小块自由表头:状态_自由表 + 4*(大小/8),至 0x5C4 止(32 类)。:」
「状态_小类掩码」者「一四八零」也。 「:文言:小块诸类非空之掩码:类 k(大小 8k)非空则位 k−1 为一。汉语:小块自由表非空掩码:类 k(大小 8k 字节,k 为 1 至 32)的链表非空时第 k−1 位为 1;取小类分割先看掩码,没有更大的非空类就不必逐类扫描。:」
「状态_异步表」者「一四八四」也。 「:文言:原生异步子进程之表址,未设则零。汉语:原生异步子进程表的地址(启动时用 取区域 分配;裸机上为 0)。:」
「异步表项数」者「一零二四」也。 「:文言:异步子进程至多千二十四。汉语:同时至多 1024 个异步子进程。:」
「异步项长」者「四八」也。
「异步表字节」者「四九一五二」也。 「:文言:表之长,千二十四项,项各四十八字节。汉语:表长 = 1024 × 48 字节;回收时整段作为根保守扫描(项里存着捕获缓冲的引用)。:」
「异步区字节」者「一四七四八八」也。 「:文言:表后继以订阅与事件之区,各三千七十三项,项十六字节。汉语:表之后是等待用的订阅区与事件区,各 3×1024+1 项、每项 16 字节。:」
「状态_大自由」者「一四八八」也。 「:文言:大块自由链之头。汉语:大块自由链表头。:」
「状态_分配计」者「一四九二」也。 「:文言:自前次回收以来所分配之字节数。汉语:上次回收以来分配的字节数。:」
「状态_回收阈」者「一四九六」也。
「状态_回收禁」者「一五零零」也。 「:文言:非零则禁回收。汉语:非零时禁止回收。:」
「状态_活字节」者「一五零四」也。 「:文言:前次回收后存活之字节数。汉语:上次回收后存活字节数。:」
「状态_栈针」者「一五三六」也。
「状态_帧针」者「一五四零」也。
「状态_指令针」者「一五四四」也。
「状态_函」者「一五四八」也。
「状态_帧顶」者「一五五二」也。
「状态_标签顶」者「一五五六」也。
「状态_处理顶」者「一五六零」也。
「状态_例外数」者「一五六四」也。
「状态_例外标签」者「一五六八」也。
「状态_例外载荷」者「一六零零」也。 「:文言:六十四槽各八字节,共五百一十二,居 0x640 至 0x83F。汉语:64 槽 × 8 = 512 字节:0x640–0x83F。:」
「状态_块参」者「二一一二」也。
「状态_块果」者「二一一六」也。
「状态_新指令针」者「二一二零」也。
「状态_新帧针」者「二一二四」也。
「状态_边偏」者「二一二八」也。
「状态_主机结果」者「二一三二」也。
「状态_跟踪」者「二一三六」也。
「状态_监视」者「二一四零」也。
「状态_回收下限」者「二一七二」也。
「状态_扫描中」者「二一六四」也。
「状态_型字节」者「二一四四」也。
「状态_型元组」者「二一四八」也。
「状态_型大整」者「二一五二」也。
「状态_型浮点」者「二一五六」也。
「状态_命令行参数数」者「二一六零」也。
「状态_行缓冲」者「二一七六」也。
「状态_文件系统_已挂载」者「二二零八」也。
「状态_文件系统_容量」者「二二一二」也。
「状态_文件系统_活区」者「二二一六」也。
「状态_文件系统_区起」者「二二二零」也。
「状态_文件系统_区长」者「二二二四」也。
「状态_文件系统_代」者「二二二八」也。
「状态_文件系统_尾」者「二二三二」也。
「状态_文件系统_序」者「二二三六」也。
「状态_文件系统_条目」者「二二四零」也。
「状态_文件系统_条目数」者「二二四四」也。
「状态_文件系统_条目限」者「二二四八」也。
「状态_文件系统_池」者「二二五二」也。
「状态_文件系统_池顶」者「二二五六」也。
「状态_文件系统_池限」者「二二六零」也。
「状态_文件系统_扇区」者「二二六四」也。
「状态_文件系统_扇区二」者「二二六八」也。
「状态_文件系统_路径缓」者「二二七二」也。
「状态_文件系统_读扇区」者「二二七六」也。
「状态_文件系统_读长」者「二二八零」也。
「状态_文件系统_当前目录」者「二二八四」也。
「状态_文件系统_跟踪」者「二二八八」也。
「状态_文件系统_扇区三」者「二二九二」也。
「状态_文件系统_当前长」者「二二九六」也。
「状态_文件系统_错误码」者「二三零零」也。
「校验初值」者(「减」于「零」于「二一二八八三一零三五」)也。
「行缓冲大小」者「四零九六」也。
「状态_自动格式化」者「二一八零」也。 「:文言:非零则挂载遇空盘自格式化,测试之用。汉语:非零:挂载遇空白盘时自动格式化(测试用)。:」
「暂存缓冲」者「一一五二零」也。 「:文言:宿主原语之暂存区,0x2D00 至 0x2FFF。汉语:宿主原语的暂存区(0x2D00–0x2FFF)。:」
「状态_临时」者「二三零四」也。 「:文言:宽整数运算之临时槽,共八,止于 0x93F。汉语:宽整数运算的临时槽(8 槽,0x900–0x93F;其后 0x940 起是块设备状态格,不可越界)。:」
「状态_宽临时」者「二四三二」也。 「:文言:宿主原语之宽整数临时槽,共十,始于 0x980。汉语:宿主原语(整数转串、串转整、整数算术)用的宽整数临时槽:0x980–0x9CF,10 槽。:」
「扫描栈」者「四零九六」也。 「:文言:边表扫描所用之控制栈,每项八字节,五百一十二层。汉语:边表扫描用的控制栈:每项 8 字节,512 层。:」
「扫描栈限」者「八一九二」也。
「类型条长」者「三二」也。
「函数条长」者「三二」也。
「头标记」者「二一四七四八三六四八」也。
「种类结构」者「一」也。
「种类数组」者「二」也。
「种类空闲」者「三」也。
「小块上限」者「二五六」也。
「堆增量」者「一零四八五七六」也。 「:文言:每次向内存索取一兆。汉语:每次向内存索取 1 MiB。:」
「初始堆字节」者「四一九四三零四」也。 「:文言:堆初容四兆。汉语:初始堆容量 4 MiB。:」
「回收下限」者「二零九七一五二」也。 「:文言:两回收之间至少分配二兆。汉语:两次回收之间至少分配 2 MiB。:」
「种类异常」者「四」也。
「测试名」者「九二一六」也。 「:文言:所调导出之名,零止;空则用 _start。汉语:要调用的导出名(零结尾;为空则用 _start)。:」
「测试参数数」者「九二八零」也。
「测试参数」者「九二八四」也。 「:文言:至多八个 i32 参数。汉语:至多 8 个 i32 参数。:」
「测试结果数」者「九三二八」也。
「:文言:诸表之条目字段偏移。汉语:类型条(32 字节)、函数条(32 字节)、表描述(16 字节)、元素段条(24 字节)、数据段条(20 字节)、标签条(8 字节)的字段偏移。:」
「类型条_种类」者「零」也。 「:文言:一为函数、二为结构、三为数组。汉语:1 函数、2 结构、3 数组。:」
「类型条_甲」者「四」也。 「:文言:函数为参数数,结构为字段数,数组为元素类。汉语:函数为参数数,结构为字段数,数组为元素类别。:」
「类型条_乙」者「八」也。 「:文言:函数为结果数,结构为字段数,数组为元素字节数。汉语:函数为结果数,结构为字段数,数组为元素字节数。:」
「类型条_超类」者「一二」也。
「类型条_编码起」者「一六」也。
「类型条_结果编码起」者「二零」也。
「类型条_编码止」者「二四」也。
「类型条_终类」者「二八」也。
「函数条_类型」者「零」也。
「函数条_代码起」者「四」也。
「函数条_代码止」者「八」也。
「函数条_参数数」者「一二」也。
「函数条_结果数」者「一六」也。
「函数条_局部总数」者「二零」也。
「函数条_边表」者「二四」也。
「函数条_标志」者「二八」也。 「:文言:低位一者导入,高位为宿主函数号。汉语:低位 1 表示导入,高位为宿主函数号。:」
「表描述长」者「一六」也。
「表描述_数据」者「零」也。
「表描述_大小」者「四」也。
「表描述_上限」者「八」也。
「表描述_类别」者「一二」也。
「元素段条长」者「二四」也。
「元素段_向量起」者「零」也。
「元素段_个数」者「四」也。
「元素段_标志」者「八」也。
「元素段_已弃」者「一二」也。
「元素段_式」者「一六」也。
「元素段_表号」者「二零」也。
「数据段条长」者「二零」也。
「数据段_数据」者「零」也。
「数据段_长度」者「四」也。
「数据段_被动」者「八」也。
「数据段_已弃」者「一二」也。
「数据段_式」者「一六」也。
「标签条长」者「八」也。
「标签条_类型」者「零」也。
「标签条_参数数」者「四」也。
「:文言:标签栈之种。汉语:标签栈条目(16 字节:目标位置、栈基、元数、种类)的种类:块、循环、条件、尝试表、函数。:」
「标签块」者「零」也。
「标签循环」者「一」也。
「标签条件」者「二」也。
「标签尝试」者「三」也。
「标签函数」者「四」也。
「标签栈条长」者「一六」也。
「标签_目标」者「零」也。
「标签_栈基」者「四」也。
「标签_元数」者「八」也。
「标签_种类」者「一二」也。
「帧条长」者「三二」也。 「:文言:调用帧条目:归位、帧针、函数号、标签顶、处理顶。汉语:调用帧条目:返回位置、帧针、函数号、标签顶、处理顶。:」
「处理条长」者「三二」也。
「:文言:处理栈条之字段。汉语:处理器栈项(32 字节):子句起点、子句数、帧顶、值栈基、标签顶(压 try 标签之前)、帧针、当前函数。:」
「处理_子句起」者「零」也。
「处理_子句数」者「四」也。
「处理_帧顶」者「八」也。
「处理_栈基」者「一二」也。
「处理_标签顶」者「一六」也。
「处理_帧针」者「二零」也。
「处理_函数」者「二四」也。
「:文言:子任务之约:状态格与运行期缓冲。汉语:子进程相关:待重启格(存新程序长度,非零则重启)与是否子任务格(1 继承输出,2 丢弃输出);命令行参数、程序名各有“本任务之区”与“送子任务之区”,都放在字面串区之后(字面串区止于 参数区 起点)。:」
「状态_待重启」者「二四一六」也。 「:文言:非零则本任务已被换成新程序,其值乃新程序之字节长,解释循环退出后自头启动。汉语:非零:本任务已被换成新程序,值为新程序字节数;解释循环退出后须从头启动。:」
「状态_是子任务」者「二四二零」也。 「:文言:零为初始任务,一为复制而来之子任务,二为其输出被弃者。汉语:0 初始任务;1 复制出来的子任务(输出继承);2 子任务且丢弃输出。:」
「参数区」者「四九一五二」也。 「:文言:本任务之命令行参数区:首为个数,其后每项〔长四字节〕加字节,四字节对齐。汉语:本任务的命令行参数区:+0 个数;其后每项 [长度 4 字节][字节…],对齐到 4。:」
「参数区大小」者「四零九六」也。
「程序名区」者「五三二四八」也。 「:文言:本任务之程序名区:首为长,四字节后为绝对路径。汉语:本任务的程序名区:+0 长度;+4 起是绝对路径字节。:」
「程序名上限」者「一零二四」也。
「送参数区」者「五七三四四」也。 「:文言:欲送子任务之参数,复制前所书,子任务醒后取之。汉语:准备交给子任务的参数区:父任务复制前写入,子任务醒来后拷入自己的 参数区。:」
「送程序名区」者「六一四四零」也。 「:文言:欲送子任务之程序名,用法同上。汉语:准备交给子任务的程序名区,用法同上。:」
「子进程失败码」者「一二七」也。
「:文言:多实例之约:诸模块各有其“上下文”(类型、函数、全局、表、元素、数据、标签、内存、节表与原型类型诸格),切换实例即拷入拷出此上下文;对象头带实例号;实例之记录在实例表。汉语:多实例执行器:每个已装载的模块是一个实例,其“上下文”是 0x41C 起的一段状态格(模块址、类型表、函数表、全局表、表描述、元素段、数据段、标签、客内存、节表)加模块长与宿主原型类型格;切换实例就是把当前上下文存回实例记录、再把目标记录拷入状态格。对象头字 0 的第 16–23 位记创建它的实例号(初始实例为 0,与旧头字节相同),使堆回收能用正确的类型表扫描各实例的对象。:」
「状态_模块址」者「一零五二」也。 「:文言:本实例之模块字节所在;初始实例在模块窗口。汉语:本实例模块字节的起始地址(初始实例是 模块基)。:」
「上下文首」者「一零五二」也。
「上下文长」者「二二八」也。
「状态_当前实例」者「二四二四」也。 「:文言:现行之实例号。汉语:当前正在执行的实例号(初始实例为 0)。:」
「状态_实例表」者「二四二八」也。
「状态_实例数」者「二五一二」也。 「:文言:已用之实例记录数(含初始实例)。汉语:已使用的实例记录个数(含初始实例)。:」
「状态_请求」者「二五一六」也。 「:文言:非零则解释循环当退出,由入口之驱动循环代办:一加载模块,二调用导出,三装箱调用之果。汉语:待办请求(非零则解释循环退出,由入口的驱动循环处理后续跑):1 加载模块,2 调用导出,3 为调用导出的返回结果装箱。:」
「状态_请求参一」者「二五二零」也。
「状态_请求参二」者「二五二四」也。
「状态_请求参三」者「二五二八」也。
「状态_续指令针」者「二五三二」也。 「:文言:请求办毕后续行之处。汉语:请求处理完后继续解释的现场:指令针、帧针、栈针(结果槽在栈针之下)。:」
「状态_续帧针」者「二五三六」也。
「状态_续栈针」者「二五四零」也。
「请求_加载」者「一」也。
「请求_调用导出」者「二」也。
「请求_装箱结果」者「三」也。
「实例记录长」者「五一二」也。
「最大实例数」者「一六」也。
「记录_状态」者「零」也。 「:文言:零未用,一已装载。汉语:0 未用,1 已装载。:」
「记录_名址」者「四」也。
「记录_名长」者「八」也。
「记录_块数」者「一二」也。
「记录_上下文」者「一六」也。
「记录_模块长」者「二四四」也。
「记录_原型」者「二四八」也。
「记录_块表」者「二六四」也。 「:文言:本实例所有原始块之头址,共至多三十二。汉语:本实例拥有的原始块头地址表,至多 32 项,回收时作为根。:」
「块表容量」者「三二」也。
「种类原始」者「五」也。 「:文言:原始块:只有字节,回收时不扫其内。汉语:原始字节块(次级实例的模块字节、元数据与客内存):回收时只标记不扫描。:」
「帧_实例」者「二零」也。 「:文言:调用帧之实例号:返回时须回此实例。汉语:调用帧里记录的调用者实例号,返回时若与当前不同就切回去。:」
「帧_钩」者「二四」也。 「:文言:返回之钩:一者其果当装箱交还宿主。汉语:帧的返回钩:非零表示这是“调用导出”的帧,返回时要把结果装箱后交还宿主调用。:」
「处理_实例」者「二八」也。
「函数条_链接实例」者「四」也。 「:文言:导入已链于他实例者,其代码起存彼实例号,代码止存彼函数号,边表存导入项之址。汉语:已链接到其他实例的导入:代码起字段存目标实例号,代码止字段存目标函数号,边表字段存导入项在模块字节里的地址(用于延迟链接与报错)。:」
「函数条_链接函数」者「八」也。
「函数条_导入项」者「二四」也。
「宿主号_未连接」者「零」也。
「宿主号_宿主」者「一」也。
「宿主号_实例」者「二」也。
「宿主号_WASI」者「三」也。 「:文言:三号宿主导入为 WASI preview1。汉语:宿主导入编号 3 用于 WASI preview1 函数。:」
「:文言:软浮点之暂存:小数运算以整数软件实现,诸中间值置于此区(0x2580 起)。汉语:软浮点(IEEE 754 双精度,整数指令实现)的暂存区:8 字节槽用于操作数、结果、解包后的尾数、128 位乘积、暂存;4 字节格记两个操作数解包后的符号、指数、类别(0 零,1 有限,2 无穷,3 非数);其后是大整数与数字缓冲。:」
「软浮点暂存」者「九六零零」也。
「浮槽_甲」者「九六零零」也。
「浮槽_乙」者「九六零八」也。
「浮槽_果」者「九六一六」也。
「浮槽_尾甲」者「九六二四」也。
「浮槽_尾乙」者「九六三二」也。
「浮槽_积高」者「九六四零」也。
「浮槽_积低」者「九六四八」也。
「浮槽_暂一」者「九六五六」也。
「浮槽_暂二」者「九六六四」也。
「浮槽_暂三」者「九六七二」也。
「浮槽_暂四」者「九六八零」也。
「浮格_甲」者「九六八八」也。 「:文言:三格:符号、指数、类别。汉语:三个 4 字节格:符号、指数、类别。:」
「浮格_乙」者「九七零零」也。
「浮格_量」者「九七一二」也。
「浮格_余」者「九七一六」也。 「:文言:大数除小之余。汉语:大数除以小数所得的余数格。:」
「大数甲」者「九七六零」也。 「:文言:四大数各六十四肢(每肢四字节,低肢在前)。汉语:四个大整数缓冲,各 64 个 32 位肢(低肢在前,共 2048 位,每个 256 字节)。:」
「大数乙」者「一零零一六」也。
「大数丙」者「一零二七二」也。
「大数丁」者「一零五二八」也。
「浮串缓冲」者「一零七八四」也。 「:文言:小数转串之出,共六百九十字节,前半为成串、后半为暂存之数字。汉语:小数转字符串的缓冲(690 字节,至 0x2CD2):前 350 字节放成品串,后 340 字节放大整数转出的十进制数字。:」
「析格_符」者「九七二零」也。 「:文言:析文之诸格。汉语:字符串转小数时的状态格:符号、游标、有效数字个数、被丢弃的数字个数、丢弃的数字里有无非零、小数点后位数、显式指数、是否见到数字。:」
「析格_位」者「九七二四」也。
「析格_有效」者「九七二八」也。
「析格_丢弃」者「九七三二」也。
「析格_丢非零」者「九七三六」也。
「析格_小数位」者「九七四零」也。
「析格_指数」者「九七四四」也。
「析格_有数」者「九七四八」也。
「浮槽_十」者「九七五二」也。 「:文言:常量十与析文之暂存槽。汉语:浮点常量 10.0 与字符串转小数用的四个暂存槽(0x2CE0–0x2CFF)。:」
「浮槽_析一」者「一一四八八」也。
「浮槽_析二」者「一一四九六」也。
「浮槽_析三」者「一一五零四」也。
「浮槽_析四」者「一一五一二」也。
「析格_大长」者「一一四七六」也。 「:文言:析文所积大数之肢数,及其所弃之位数与其中有无非零。汉语:字符串转小数时,全部数字累积成的大整数(大数甲)的肢数;超过容量而未能累积的数字个数及其中有无非零。:」
「析格_大丢弃」者「一一四八零」也。
「析格_大丢非零」者「一一四八四」也。
「:文言:浮点指令之暂存:格式格居状态格区,开方与测试之槽居 0x2000 起之空闲区(扫描栈之后、测试名之前)。汉语:Wasm 浮点指令用的状态:浮格_格式(0 双精度、1 单精度,f32 指令临时置 1、算完置回 0)放在状态格区 0xE30;开方用的被开方数(128 位)、根、候选、平方(128 位)槽与自检入口用的三槽测试栈放在 0x2000–0x23FF 的空闲区(0x2000 起,扫描栈之后、测试名 0x2400 之前)。:」
「浮格_格式」者「三六三二」也。
「浮槽_被高」者「八一九二」也。
「浮槽_被低」者「八二零零」也。
「浮槽_根」者「八二零八」也。
「浮槽_候」者「八二一六」也。
「浮槽_方高」者「八二二四」也。
「浮槽_方低」者「八二三二」也。
「浮槽_测栈」者「八二四零」也。
「:文言:输出捕获之格:子进程之出经邮箱送父任务,父任务收之。汉语:输出捕获(子进程的标准输出与标准错误经内核邮箱送给父任务)用的状态格,放在 0xE00 起、块设备暂存区之后的空闲区(不被重启准备清零):输出流(1 标准输出、2 标准错误)、待发的字节数与打包字、待发所属的流;父任务一侧的两个捕获缓冲(字节数组引用、已用长度、容量)与异步子任务号。消息格式:高字节 0x40 + 16×流位(0 出、1 误)+ 字节数(1 至 3),低三个字节依次是所带字节;父任务收到后回复消息 1 作确认。:」
「状态_输出流」者「三五八四」也。
「状态_待发数」者「三五八八」也。
「状态_待发字」者「三五九二」也。
「状态_待发流」者「三五九六」也。
「状态_捕获出引」者「三六零零」也。
「状态_捕获出长」者「三六零四」也。
「状态_捕获出容」者「三六零八」也。
「状态_捕获误引」者「三六一二」也。
「状态_捕获误长」者「三六一六」也。
「状态_捕获误容」者「三六二零」也。
「状态_异步子号」者「三六二四」也。 「:文言:异步子进程之任务号加一,零为无。汉语:异步子进程的任务句柄加 1(0 表示没有异步子进程)。:」
「捕获消息标」者「六四」也。
「:文言:大程序之格:磁盘上之程序逾模块窗者,子任务先暂置之于动态区之尾,重启时移至区域起,主程序遂居动态区之首。汉语:运行磁盘上比模块窗口(448 KiB)更大的程序:子任务改装时把程序字节暂存到动态区尾(状态_暂存址),重启准备把它搬到 区域起,清零其余,并置 状态_主程序大;解析模块据此把模块址设为 区域起、区域顶设在模块之后。这两个格放在 0xE00 起不被重启清零的区域。最大主程序长 是磁盘程序的上限。:」
「状态_暂存址」者「三六四八」也。
「状态_主程序大」者「三六五二」也。
「最大主程序长」者「六七一零八八六四」也。
「:文言:远程文件之格:解码之游标与应答之结果。汉语:远程文件调用用的两个状态格(放在 0xE00 起不被重启清零的区域):解码游标(序列化字节流当前读到哪里)与远程调用结果(子任务收到的应答解码后的对象引用)。:」
「状态_解码游」者「三六五六」也。
「状态_远程结果」者「三六六零」也。
「:文言:三六六四至三六七一,留为底柄之表址与终端之模;暂存缓冲可任时改写。汉语:3664–3671 留给底层句柄表地址和终端模式;暂存缓冲可作临时读写,不再保存持久句柄状态。:」
「:文言:子任务承父之当前目录:置于送程序名区与程序名区之内、偏二零四八处(长四字节,后为路径字节)。汉语:子任务继承壳的当前目录:父任务在复制任务之前把当前目录(长度 4 字节 + 路径字节,至多路径上限 440 字节)写到 送程序名区 + 工作目录偏;子任务改装把它拷到自己的 程序名区 + 工作目录偏(不被重启清零);重启后文件系统初始化把当前目录置为 “/”,随后 继承当前目录 再改回父任务的当前目录。:」
「工作目录偏」者「二零四八」也。