原生参数。豫
yuyan · 194 行 · 11955 字节 · 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
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「基础」之书。
寻观「客体二号」之「宿主对象」之书。
寻观「客体二号」之「林系统」之书。
寻观「客体二号」之「苹系统」之书。
寻观「客体二号」之「林启动」之书。
寻观「客体二号」之「苹启动」之书。
「:文言:原生之参数与环境,临用自系统重取:Linux 读 /proc/self 之 cmdline 与 environ,macOS 以 sysctl 之 KERN_PROCARGS2 取之;读入堆中之字节数组,不足则四倍其容而重读,至多二百五十六兆字节。启动时所书之参数区仅四千零九十六字节、环境块仅一千零二十字节,编译器之工作进程参数甚长,截之则误。宿主原语行时不回收,故中间之对象无须暂根。汉语:原生系统上的命令行参数与环境变量在调用时从操作系统重新读取:Linux 读 /proc/self/cmdline 与 /proc/self/environ,macOS 用 sysctl 的 KERN_PROCARGS2;读进堆里的字节数组,容量不够就放大四倍重读,至多 256 MiB。启动时写的参数区只有 4096 字节、环境块只有 1020 字节,而编译器工作进程的参数(几十个依赖文件路径)很长,被截断就会出错。宿主原语执行期间不做回收,所以中间对象不必放临时根。待办事项:WASI 的参数与环境、底层接口的取参数仍读启动时写的固定区。:」
「原生启动块上限」者「二六八四三五四五六」也。
「:文言:读启动块:类零为参数,一为环境(Linux 分二文,macOS 同一块)。返字节数组,其长即所读之数。汉语:读取启动块:类 0 取参数、1 取环境(Linux 是两个文件,macOS 是同一个 KERN_PROCARGS2 块)。返回字节数组对象,其长度字段改成实际读到的字节数(不影响回收:回收按对象头里的总字节数扫描)。:」
「原生读启动块」乃化「整数」而化「整数」而「整数」也。
「原生读启动块」者会「类」而会「容」而
虑「块」者「新字节数组」于「容」而
虑「缓」者「加」于「块」于「一六」而
虑「数」者
若「是苹」于「元」则
虑「名」者「状态_林时」而
虑「长址」者「状态_林字节」而
虑「无」者「写四」于「名」于「一」而
虑「无」者「写四」于(「加」于「名」于「四」)于「四九」而
虑「无」者
「写四」于(「加」于「名」于「八」)于(「苹_进程号」于「元」)而
虑「无」者「写四」于「长址」于「容」而
虑「无」者「写四」于(「加」于「长址」于「四」)于「零」而
虑「果」者
「苹_系统量」于「名」于「三」于「缓」于「长址」于「零」于「零」而
若「等零」于「果」则「读四」于「长址」否则「容」
否则
「林读全文」
于(若「等零」于「类」则「静态串」于『/proc/self/cmdline』否则「静态串」于『/proc/self/environ』)
于「缓」
于「容」
而
若「且」于(「有符号大等」于「数」于「容」)于(「小于」于「容」于「原生启动块上限」)则
「原生读启动块」于「类」于(「乘」于「容」于「四」)
否则
((「写四」于(「加」于「块」于「八」)于(「选择」于(「小于」于「数」于「零」)于「零」于「数」));
「块」)
也。
「:文言:macOS 之块中,参数之始:越参数之数、执行之径与其后之零。汉语:在 macOS 的 KERN_PROCARGS2 块里定位第 0 个参数:跳过开头 4 字节参数个数、可执行文件路径及其后的填充零。:」
「苹参数起」乃化「整数」而化「整数」而「整数」也。
「苹参数起」者会「缓」而会「长」而
「苹跳零」于「缓」于(「加」于(「林找零」于「缓」于「四」于「长」)于「一」)于「长」
也。
「:文言:计以零终之串数于[起,止)。汉语:数 [起, 止) 里以零结尾的串的个数。:」
「零终串数」乃化「整数」而化「整数」而化「整数」而化「整数」而「整数」也。
「零终串数」者会「缓」而会「起」而会「止」而会「数」而
若「有符号大等」于「起」于「止」则
「数」
否则
「零终串数」于「缓」于(「加」于(「林找零」于「缓」于「起」于「止」)于「一」)于「止」
于(「加」于「数」于「一」)
也。
「:文言:取以零终之串为字节数组。汉语:把从“起”开始、以零结尾(至多到“止”)的串拷成字节数组。:」
「零终串对象」乃化「整数」而化「整数」而化「整数」而「整数」也。
「零终串对象」者会「缓」而会「起」而会「止」而
虑「终」者「林找零」于「缓」于「起」于「止」而
虑「长」者「减」于「终」于「起」而
虑「串」者「新字节数组」于「长」而
虑「无」者
(若「大于」于「长」于「零」则「拷贝」于(「加」于「串」于「一六」)于(「加」于「缓」于「起」)于「长」否则「元」)
而
「串」
也。
「填零终串们」乃
化「整数」而
化「整数」而
化「整数」而
化「整数」而
化「整数」而
化「整数」而
「有」
也。
「填零终串们」者会「内」而会「个数」而会「缓」而会「起」而会「止」而会「序」而
若「或者」于(「有符号大等」于「起」于「止」)于(「有符号大等」于「序」于「个数」)则
「元」
否则
((「设元组项」于「内」于「序」于(「零终串对象」于「缓」于「起」于「止」));
「填零终串们」
于「内」
于「个数」
于「缓」
于(「加」于(「林找零」于「缓」于「起」于「止」)于「一」)
于「止」
于(「加」于「序」于「一」))
也。
「:文言:原生之命令行参数(原语七):去第零个,成(元组,个数)。汉语:原生系统的命令行参数(原语 7):去掉第 0 个参数,返回(参数元组,个数),形状与裸机实现相同。:」
「原生参数对象」乃化「有」而「整数」也。
「原生参数对象」者会「无」而
虑「块」者「原生读启动块」于「零」于「一零四八五七六」而
虑「长」者「字节数组长」于「块」而
虑「缓」者「加」于「块」于「一六」而
虑「起」者
若「是苹」于「元」则
「加」于(「林找零」于「缓」于(「苹参数起」于「缓」于「长」)于「长」)于「一」
否则
「加」于(「林找零」于「缓」于「零」于「长」)于「一」
而
虑「个数」者
若「是苹」于「元」则
(若「大于」于(「读四」于「缓」)于「零」则「减」于(「读四」于「缓」)于「一」否则「零」)
否则
「零终串数」于「缓」于「起」于「长」于「零」
而
虑「内」者「新元组」于「个数」而
虑「无」者
「填零终串们」于「内」于「个数」于「缓」于「起」于「长」于「零」而
虑「外」者「新元组」于「二」而
虑「无」者(「设元组项」于「外」于「零」于「内」)而
虑「无」者(「设元组项」于「外」于「一」于(「装箱整」于「个数」))而
「外」
也。
「:文言:串首合名而继以等号否。汉语:判断从“址”开始的串是否以 名 开头并紧跟“=”。:」
「名等号首」乃化「整数」而化「整数」而化「整数」而化「整数」而「爻」也。
「名等号首」者会「址」而
会「止」而
会「名址」而
会「名长」而
递归虑「比」其化「整数」而「爻」者会「序」而
若「有符号大等」于「序」于「名长」则
「且」
于(「小于」于(「加」于「址」于「名长」)于「止」)
于(「等」于(「读一」于(「加」于「址」于「名长」))于「六一」)
否则若「有符号大等」于(「加」于「址」于「序」)于「止」则
「阴」
否则若「等」
于(「读一」于(「加」于「址」于「序」))
于(「读一」于(「加」于「名址」于「序」))则
「比」于(「加」于「序」于「一」)
否则
「阴」
而
「比」于「零」
也。
「:文言:寻环境之值:逐串比之,遇空串(macOS 环境之末)而止。返值之起,无则负一。汉语:在 [起, 止) 的“名=值”串里找 名:逐串比较,遇到空串(macOS 环境区末尾)就停。返回值的起点,找不到返回 -1。:」
「寻环境串」乃
化「整数」而
化「整数」而
化「整数」而
化「整数」而
化「整数」而
「整数」
也。
「寻环境串」者会「缓」而会「起」而会「止」而会「名址」而会「名长」而
若「或者」于(「有符号大等」于「起」于「止」)于(「等零」于(「读一」于(「加」于「缓」于「起」)))则
(「减」于「零」于「一」)
否则若「名等号首」于(「加」于「缓」于「起」)于(「加」于「缓」于「止」)于「名址」于「名长」则
「加」于「起」于(「加」于「名长」于「一」)
否则
「寻环境串」于「缓」于(「加」于(「林找零」于「缓」于「起」于「止」)于「一」)于「止」于「名址」于「名长」
也。
「:文言:原生之环境变量(原语九):成(有否,值)。汉语:原生系统按名取环境变量(原语 9):返回(是否存在,值)二元组,形状与裸机实现相同。:」
「原生环境变量对象」乃化「整数」而「整数」也。
「原生环境变量对象」者会「参」而
虑「名」者「元组项」于「参」于「零」而
虑「块」者「原生读启动块」于「一」于「一零四八五七六」而
虑「长」者「字节数组长」于「块」而
虑「缓」者「加」于「块」于「一六」而
虑「起」者
若「是苹」于「元」则
虑「零起」者「苹参数起」于「缓」于「长」而
「苹跳零」于「缓」于(「苹跳串们」于「缓」于「零起」于「长」于(「读四」于「缓」))于「长」
否则
「零」
而
虑「值起」者
「寻环境串」于「缓」于「起」于「长」于(「加」于「名」于「一六」)
于(「字节数组长」于「名」)
而
虑「对象」者「新元组」于「二」而
若「小于」于「值起」于「零」则
虑「无」者(「设元组项」于「对象」于「零」于(「装箱整」于「零」))而
虑「无」者
(「设元组项」于「对象」于「一」于(「新字节数组」于「零」))
而
「对象」
否则
虑「无」者(「设元组项」于「对象」于「零」于(「装箱整」于「一」))而
虑「无」者
(「设元组项」于「对象」于「一」于(「零终串对象」于「缓」于「值起」于「长」))
而
「对象」
也。