持久盘构造。豫
yuyan · 297 行 · 16100 字节 · 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
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「编译器核心」之「网页汇编核心」之「二进制生成」之书。
寻观「裸机后端」之「机器编码」之书。
「:文言:离线造盘,格式同客体执行器二号之文件系统。汉语:按 豫言操作系统/裸机/客体二号/文件系统。豫 的双区追加日志格式,离线生成一个已格式化并写入目录与文件的磁盘镜像:扇区 0、1 为超级块(只写代数一的一个),其后两个等长的区,第一区依次记录建目录与写文件。校验为 32 位 FNV-1a。生成的镜像可直接作为 QEMU 的 virtio-blk 磁盘,客体挂载后即见这些文件;格式变更须与 文件系统。豫 同步。:」
「盘魔数超级」乃「整数」也。
「盘魔数超级」者「一三九七一一九三二一」也。
「盘魔数头」乃「整数」也。
「盘魔数头」者「八二七四八零四零九」也。
「盘魔数提交」乃「整数」也。
「盘魔数提交」者「八二六四九七三六九」也。
「盘校验初值」乃「整数」也。
「盘校验初值」者「二一六六一三六二六一」也。
「盘校验乘数」乃「整数」也。
「盘校验乘数」者「一六七七七六一九」也。
「盘二的三二次」乃「整数」也。
「盘二的三二次」者「四二九四九六七二九六」也。
「盘路径上限」乃「整数」也。
「盘路径上限」者「四四零」也。
「:文言:八位之异或,逐位而算。汉语:甲、乙为零到二五五之整数,返回按位异或。:」
「盘异或八位」乃化「整数」而化「整数」而「整数」也。
「盘异或八位」者会「甲」而
会「乙」而
递归虑「逐位」其化「整数」而化「整数」而化「整数」而化「整数」而「整数」者会「x」而会「y」而会「权」而会「累」而
若「等于」于「权」于「二五六」则「累」否则
虑「位甲」者「整数余数」于(「除以」于「x」于「权」)于「二」
而
虑「位乙」者「整数余数」于(「除以」于「y」于「权」)于「二」而
「逐位」
于「x」
于「y」
于(「乘」于「权」于「二」)
于(若「等于」于「位甲」于「位乙」则「累」否则「加」于「累」于「权」)
而
「逐位」于「甲」于「乙」于「一」于「零」
也。
「:文言:三十二位 FNV-1a,种子可续。汉语:对字节串逐字节做 h = (h xor 字节) * 16777619 (mod 2^32)。:」
「盘校验」乃化「字节串」而化「整数」而「整数」也。
「盘校验」者会「串」而会「种子」而
虑「长」者「字节串长度」于「串」而
递归虑「逐字节」其化「整数」而化「整数」而「整数」者会「位置」而
会「累」而
若「等于」于「位置」于「长」则
「累」
否则
虑「字节」者「字节串取字节」于「串」于「位置」
而
虑「低」者「整数余数」于「累」于「二五六」而
虑「新」者
「整数余数」
于(「乘」于(「加」于(「减」于「累」于「低」)于(「盘异或八位」于「低」于「字节」))于「盘校验乘数」)
于「盘二的三二次」
而
「逐字节」于(「加」于「位置」于「一」)于「新」
而
「逐字节」于「零」于「种子」
也。
「盘补扇区」乃化「字节串」而「字节串」也。
「盘补扇区」者会「串」而
虑「余」者「整数余数」于(「字节串长度」于「串」)于「五一二」而
若「等于」于「余」于「零」则
「串」
否则
「拼接字节串」于「串」于(「零字节」于(「减」于「五一二」于「余」))
也。
「盘字」乃化「整数」而「字节串」也。
「盘字」者会「数」而
「小端字节」于「四」于「数」
也。
「盘上取扇区」乃化「整数」而「整数」也。
「盘上取扇区」者会「字节」而
「除以」于(「加」于「字节」于「五一一」)于「五一二」
也。
「:文言:造一条记录:头扇区、数据扇区、提交扇区。汉语:类型一建目录、二写文件;序号自一起;返回记录的全部字节(扇区数为数据扇区数加二)。:」
「盘记录」乃化「整数」而化「整数」而化「字符串」而化「字节串」而「字节串」也。
「盘记录」者会「序」而会「类型」而会「路径」而会「数据」而
虑「路径字节」者「字符串转字节串」于「路径」而
虑「路径长」者「字节串长度」于「路径字节」而
若「或者」于(「小于」于「路径长」于「一」)于(「大于」于「路径长」于「盘路径上限」)则
「发生事故」于(『盘路径长度不合:』附「路径」)
否则
虑「数据长」者「字节串长度」于「数据」
而
虑「ds」者「盘上取扇区」于「数据长」而
虑「dsum」者「盘校验」于「数据」于「盘校验初值」而
虑「头前」者
「网页拼字节」于(「列」【
「盘字」于「盘魔数头」,
「盘字」于「一」,
「盘字」于「序」,
「盘字」于「类型」,
「盘字」于「路径长」,
「盘字」于「数据长」,
「盘字」于「ds」,
「盘字」于「dsum」
】)
而
虑「头校验」者「盘校验」于「头前」于「盘校验初值」而
虑「头」者
「盘补扇区」于(「拼接字节串」于(「拼接字节串」于「头前」于(「盘字」于「头校验」))于「路径字节」)
而
虑「提交前」者
「网页拼字节」于(「列」【
「盘字」于「盘魔数提交」,
「盘字」于「一」,
「盘字」于「序」,
「盘字」于「头校验」,
「盘字」于「dsum」
】)
而
虑「提交校验」者「盘校验」于「提交前」于「盘校验初值」而
虑「提交」者
「盘补扇区」于(「拼接字节串」于「提交前」于(「盘字」于「提交校验」))
而
「网页拼字节」于(「列」【「头」,「盘补扇区」于「数据」,「提交」】)
也。
「:文言:路径之祖先,浅者在前。汉语:返回绝对路径的全部真祖先目录(不含根与自身),由浅到深,如 /甲/乙/丙 得 /甲、/甲/乙。:」
「盘祖先们」乃化「字符串」而(「列」于「字符串」)也。
「盘祖先们」者会「路径」而
递归虑「找」其化「整数」而化(「列」于「字符串」)而(「列」于「字符串」)者会「起」而
会「累」而
鉴「串从左搜索单个」于『/』于(「获取子字符串」于「起」于(「串长度」于「路径」)于「路径」)而
有「可有」于「位」则
「找」
于(「加」于(「加」于「起」于「位」)于「一」)
于(「附加」授以「字符串」
于「累」
于(「一元素列」授以「字符串」于(「获取子字符串」于「零」于(「加」于「起」于「位」)于「路径」)))
或有「可无」则
「累」
而
「找」于「一」于(「罄」授以「字符串」)
也。
「:文言:造一整盘。汉语:容量以扇区计(至少二十);目录须父在子前;文件的父目录须已在目录表中(由造盘工具补全)。区长为(容量减二)的一半,全部记录须放进第一区。:」
「造持久盘」乃
化「整数」而
化(「列」于「字符串」)而
化(「列」于(「字符串」合「字节串」))而
「字节串」
也。
「造持久盘」者会「容量」而会「目录们」而会「文件们」而
若「小于」于「容量」于「二零」则
「发生事故」于『磁盘容量不足二十个扇区』
否则
虑「区长」者「除以」于(「减」于「容量」于「二」)于「二」
而
虑「记录们」者
「附加」授以「字节串」
于(「态射序号」授以「字符串」授以「字节串」
于(会「序」而会「路径」而「盘记录」于(「加」于「序」于「一」)于「一」于「路径」于(「空字节串」于「元」))
于「目录们」)
于(「态射序号」授以(「字符串」合「字节串」)授以「字节串」
于(会「序」而会「项」而「盘记录」
于(「加」于「序」于(「加」于「一」于(「长度」授以「字符串」于「目录们」)))
于「二」
于(「项」中「零」)
于(「项」中「一」))于「文件们」)
而
虑「记录区」者「网页拼字节」于「记录们」而
虑「记录扇区」者「除以」于(「字节串长度」于「记录区」)于「五一二」而
若「大于」于「记录扇区」于「区长」则
「发生事故」于(『磁盘容量装不下全部记录:需要 』附(「整数表示」于「记录扇区」)附『 个扇区,区长 』附(「整数表示」
于「区长」))
否则
虑「超前」者
「网页拼字节」于(「列」【
「盘字」于「盘魔数超级」,
「盘字」于「一」,
「盘字」于「一」,
「盘字」于「零」,
「盘字」于「二」,
「盘字」于「区长」,
「盘字」于「容量」
】)
而
虑「超级」者
「盘补扇区」于(「拼接字节串」于「超前」于(「盘字」于(「盘校验」于「超前」于「盘校验初值」)))
而
「网页拼字节」于(「列」【
「零字节」于「五一二」,
「超级」,
「记录区」,
「零字节」于(「乘」于(「减」于「区长」于「记录扇区」)于「五一二」),
「零字节」于(「乘」于(「减」于(「减」于「容量」于「二」)于「区长」)于「五一二」)
】)
也。
「是目录参数」乃化「字符串」而「爻」也。
「是目录参数」者会「参」而
「串开头是它吗」于『+』于「参」
也。
「盘内之路」乃化「字符串」而「字符串」也。
「盘内之路」者会「参」而
鉴「串从左搜索单个」于『=』于「参」而
有「可有」于「位」则
「获取子字符串」于「零」于「位」于「参」
或有「可无」则
「发生事故」于(『文件参数缺少等号:』附「参」)
也。
「本地之路」乃化「字符串」而「字符串」也。
「本地之路」者会「参」而
鉴「串从左搜索单个」于『=』于「参」而
有「可有」于「位」则
「获取子字符串」于(「加」于「位」于「一」)于(「串长度」于「参」)于「参」
或有「可无」则
「发生事故」于(『文件参数缺少等号:』附「参」)
也。
「去重」乃化(「列」于「字符串」)而(「列」于「字符串」)也。
「去重」者会「们」而
递归虑「逐个」其化(「列」于「字符串」)而化(「列」于「字符串」)而(「列」于「字符串」)者会「余」而
会「累」而
鉴「余」而
有「罄」则「累」
或有「缀」于「首」于「尾」则
若「存在吗」授以「字符串」于(会「x」而「串相等」于「x」于「首」)于「累」则
「逐个」于「尾」于「累」
否则
「逐个」
于「尾」
于(「附加」授以「字符串」于「累」于(「一元素列」授以「字符串」于「首」))
而
「逐个」于「们」于(「罄」授以「字符串」)
也。
「:文言:依命令行式之参数造盘。汉语:参数含 +盘内目录 与 盘内路径=本地文件 两种;读本地文件,补建祖先目录,返回整盘字节。:」
「按参数造持久盘」乃化「整数」而化(「列」于「字符串」)而「字节串」也。
「按参数造持久盘」者会「容量」而会「参们」而
虑「显式目录们」者
「态射」授以「字符串」授以「字符串」
于(「滤」授以「字符串」于「是目录参数」于「参们」)
于(会「参」而「获取子字符串」于「一」于(「串长度」于「参」)于「参」)而
虑「文件参们」者
「滤」授以「字符串」
于(会「参」而「非」于(「是目录参数」于「参」))于「参们」而
虑「文件们」者
「态射」授以「字符串」授以(「字符串」合「字节串」)
于「文件参们」
于(会「参」而(「盘内之路」于「参」)与(「文件系统」之「读文件字节串」于(「本地之路」于「参」)))而
虑「全路径们」者
「附加」授以「字符串」
于「显式目录们」
于(「态射」授以(「字符串」合「字节串」)授以「字符串」于「文件们」于(会「项」而「项」中「零」))而
虑「目录们」者
「去重」于(「串联」授以「字符串」
于(「态射」授以「字符串」授以(「列」于「字符串」)
于「全路径们」
于(会「路」而「附加」授以「字符串」
于(「盘祖先们」于「路」)
于(
若「存在吗」授以「字符串」
于(会「x」而「串相等」于「x」于「路」)于「显式目录们」则「一元素列」授以「字符串」
于「路」
否则
「罄」授以「字符串」))))
而
「造持久盘」于「容量」于「目录们」于「文件们」
也。
「:文言:以本地一树为盘之根,列出造盘之参。汉语:递归读取本地目录 根,为每个子目录生成 +盘内目录,为每个文件生成 盘内路径=本地路径;盘内前缀为空表示盘根。跳过 . 与 ..。:」
「目录树造盘参数」乃化「字符串」而化「字符串」而(「列」于「字符串」)也。
「目录树造盘参数」者会「根」而会「前缀」而
虑「名们」者
「滤」授以「字符串」
于(会「名」而「非」于(「或者」于(「串相等」于「名」于『.』)于(「串相等」于「名」于『..』)))
于(「文件系统」之「读文件夹」于「根」)
而
「串联」授以「字符串」于(「态射」授以「字符串」授以(「列」于「字符串」)
于「名们」
于(会「名」而
虑「本地」者「根」附『/』附「名」而
虑「盘内」者「前缀」附『/』附「名」而
若「文件系统」之「路径是文件夹」于「本地」则
「附加」授以「字符串」
于(「一元素列」授以「字符串」于(『+』附「盘内」))
于(「目录树造盘参数」于「本地」于「盘内」)
否则
「一元素列」授以「字符串」于(「盘内」附『=』附「本地」)))
也。